-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
元のページサイズを維持する機能 #36
Comments
OS X すごいですね… ただ、正直なところ「横幅を保った画像」を作りたいと思ったことがないのでどのくらい需要があるのかよく分かっていません。書くべきソースも特殊なので、テンプレートを新設しないと使いこなせない気がします。 |
横幅を保った画像を作りたい状況としては,ブログ記事で中央揃えの別行立て数式を使いたい状況が挙げられます。
テンプレートを新設するほどの需要はないでしょうから,FAQに書いておけば十分でしょう。 他の用途としては,外部PDFファイル入力機能を利用して,「手持ちのPDFのフォント情報を潰すべくアウトライン化したい(PDFのページサイズは維持したい)」という状況でも役立つかと思います。 |
今すでに書かれている FAQ で十分だと思っていたのと、いままで TeX2img を「TeX 画像化ツール」として使ってきたユーザに「ページサイズ」という概念があまりないかもしれないという危惧があります(複数ページが出てくるのも、開発サイドからすれば当然ですが、意識している人は少なそう)。その場合、ページサイズを維持という UI を見ても何ができるのか(あ、これは幅固定できるぞ!とか)わかる人が少ないのではないかと思うのです。
フォント埋め込みした PDF で文字化けが起こるのは Illustrator や Inkscape で開く場合だけで、要するに「編集する前提」だと思っています。となると、わざわざページサイズを維持する必要性をまだ感じていません。 ただ、Acrobat の代替ツールとしての利用はありえるかもしれません(とはいえ、Acrobat の当該機能を必要とする場面が私は思いついていません)。もちろんあるといいかもしれませんが、“なんに役立つか分からない”に起因する類のトラブルが増えないようにしないといけませんね。 |
自分がソースを持っていないPDFファイルにちょっとした誤植が見つかったときに,Illustratorで該当ページを開いて,他の文字を切り貼りするなどして数文字分を修正することがあります。そのような際によくこの機能を使います。 |
「画像の横幅維持」の件と「Acrobat 代替ツール」の件をちょっと分離したいと思いました。 画像の横幅維持はそもそも UI を新設して「一定幅画像を作る」とかで px とか bp とかできる方が親切だと思っています。TeX ソースを先ほどのように特別に書いて頑張るハックより良いかと。 Acrobat 代替ツールが一定の需要を見込めることはなんとなくわかってきました。問題は「明瞭な UI ができるかどうか」にかかっている気がします。いままでの TeX2img にはページサイズという概念が表立ってはいませんでしたぢ、もはや IMG to IMG 機能での利用のほうが多いことも予想されます。 |
Ver. 2.0.2 beta 1 を作りました。 Ver. 2.0.1 → 2.0.2 beta 1 での変更点
UI上の負担は最小限で済んだのではないかと思います。 「単一ファイルにまとめる」「元のページサイズを維持」の二大新機能は,
といった例外的ケースについても一応テストし,概ね直感通りに動くようになっているはずです。 |
Mac 版 2.0.2 beta 1 を簡単にですが使ってみました。構想どおりの実装になっていると思います。 以下はそもそも未定義か普通はありえない場合ですが、メモとして:OS X の API は「ナントカBox が不正な PDF」に対して以下の挙動をとるようにみえる。
ツールによって扱いが異なるのはなかなか困りものです。(そもそも不正な PDF なので未定義ということでよいのですが。) |
テストありがとうございます。 |
テスト用に MediaBox だけが書かれた原点が 0 0 でない PDF を作ってみて、これを TeX2img に通すと原点の位置がずれますね。
よくわかっていないのですが、MediaBox の原点が 0 でない場合は PDF 的にどう定義されている(もしくは未定義)なのでしょう? |
実例ありがとうございます。 |
Ver. 2.0.2 beta 2 で解決できたと思います。
の「相対位置」というのがポイントでした。 「ページサイズ維持」かつ「OS X のAPIでPDFから直接画像化」の場合,gsは一切使いませんが,pdfcrop類似処理において gs の bbox の結果の代わりに,元のPDFの当該BB情報を pdfTeX ソースを渡すことで余白付与作業を行います。ここでも MediaBox に対する相対座標を用いなければならない点は盲点でした。 |
Ver. 2.0.2 beta 2 はおそらく大丈夫だと思います。(簡単なテストしかしていませんが…)
この相対位置というのは ZR さんも見落としていらっしゃった部分のようで、仕様書にも分かりやすい書き方がされていないので盲点になりがちですね。 |
ありがとうございます。 また,現在気づいている制約としては,例えばArtBoxの内側にCropBoxが食い込んでいるときに,ArtBoxをページサイズとして維持して画像化を行った際に,ページサイズとしては正しくArtBoxにとられますが,CropBoxの外側の部分が描画されるかされないかが,出力画像形式によって異なります。 gs を通す経路である
ではCropBoxの外側が消え,gs を通さない経路である
ではCropBoxの外側が残ります。 これも,BoundingBox がとにかくややこしい話(3)で指摘されているgsのCropBoxによる二重クリップに起因していますね。これは仕様とするしかなさそうですね。 |
いまちょうど「MediaBoxの左下が原点でなく,かつ他のボックスがMediaと異なる値を持つ場合」を試していました。おっしゃるとおり、「スキームによる違い」が生じますがそれは仕様ということにしましょう。(そもそもそんな PDF が世にあふれているとは言いがたいので問題なし) うちのサブブログ、なんか役に立っているようで光栄です。私自身、あそこを検索して「ああそうだった」と思い出すことが最近非常に多いです。 |
お陰様で大変役立っております。
MediaBoxの左下はともかく,CropBoxが他のボックスの内側に狭く刈り込まれているPDFは,Preview.app や Acrobat でトリミングすれば発生するので,「変換経路によってCropBoxの外側が描画されたりされたりされなかったりするPDF」というのはごく普通に存在します。 |
そういえばそうですね… おっしゃるとおり「ユーザが明示的にCropBox刈り込みの行為を行ったわけであり」「ページサイズとしてはCropBoxを期待している」なので大丈夫でしょう。
私もよくブログをその用途に使います😁最近はサブブログが「その日参考にしたページのリンク集」になる傾向があり、まとまりがない割に使えてメインブログのネタ集めにも役立っています。(記事紹介ありがとうございます!) |
縦横どちらも保つ、と言うことになったのでしょうか?以前(#21 (comment) ) ちょっと書いたのを思い出しました.そのとき横方向ならば意味がありそうだけど縦横だとどうなんだろう……と思った記憶が. というか最大の問題は出力画像の余白よりオプション画面の余白なんですが…… |
今回の「元のページサイズを維持する」機能は,まさにその
の「サイズを文書サイズにあわせる」機能ですね。 横方向だけの維持はまた別途検討課題ですが,とりあえず,「サイズを文書サイズにあわせる」機能があれば,冒頭の例のような方法で横方向のみ維持することは可能ではあります。 |
了解です.こちらでも検討してみます.(さすがにBoxを選択させるのは無理だろうけど……) Mac版の機能追加に追いつけていない…… |
「元のページサイズを維持する」時は余白設定は無視ですか? |
いえ,元のページサイズに加え,さらに指定された余白を追加する仕様になっています。 |
eps以外はオプションをいじったりすればできそうなんですが,epsのBoundingBoxだけはどうにもならないですね.と言うわけで,pdftexを使ってBox取得です.-sDEVICE=bboxで取得していた部分をそっちに変更したらできているような気がするのですが……大丈夫かな.LaTeXソースから普通に作られるような「普通の」PDFでしかチェックしてませんが. |
遅くなりましたが Win 版を試してみました。CropBox に固定ということで、値取得自体はうまくいっているようですが、MediaBox の左下が 0 0 でない場合に(この前の Mac 版と同じく)ずれてしまいました。単一 PDF 出力もこれから、ですね。 |
一応LaTeXから生成されるのは基本的に全部同じかなと思ってCropBoxで固定しています.Mac版はイロイロ2imgですがこちらはまだTeX2imgなので(笑)左下がずれているときのもそんな理由でさぼっていたのですが,まぁ一応直しておきましょうかねー. |
一応直して大丈夫そうなので公開しました. |
CropBox を正しくクロップできていないようなので調べていました。スキームがこれだとすると、Crop から Media を引くべきなので、逆になっていると思います(先に Crop を取得して Media の左下を引くと、相対座標になる)。 |
ありゃ,ぼけていました.直しました. |
直っていました。単一 PDF も自然な挙動だと思います。徐々に増えるこっそり機能が満載で楽しませていただいております☺ありがとうございます。 |
うわ、tiff も単一ファイルで出てきました。すごい… |
ググったらでてきたコードを(あまり理解せず)うつしただけなので,変なことが起こるかもしれません.何かあったら教えてください. |
「図版サイズでクロップせずに元のPDFのページサイズを維持する機能」というのはどうだろう。
メリット
例えば次のようなソースを pdfLaTeX でコンパイルすることで,「横幅を一定に保った数式画像の生成」が容易にできるようになる。
仕様案
CropBox の取得方法としては,TeX2img.app の中に pdfinfo を内包しておいてそれを利用する。CUI版のオプション(例:--keep-pagesize)を増補し,この機能の動作には pdfinfo 必須とする。(従来の mudraw と同様の扱い。TeX2img.app がインストールされていればその中もサーチ。)→ OS X の Quartz API によって,5つのナントカBoxは全て取得できるので,これを用いれば pdfinfo 依存性を排除できる。
実装案
gs -sDEVICE=pdfwrite -dNoOutputFonts
を使ってPDFのアウトライン化を行うのが楽だが,-dNoOutputFonts
が使えない過去の gs をサポートしようと思うと,従来の変換経路の中に「EPSのBBox情報を元のPDFのCropBoxに書き戻す」という方法をとるのがよいだろう。(A) gsを通さない経路の場合
従来の変換経路は
であった。この「pdfcrop類似処理でクロップ」においては,
gs -sDEVICE=bbox
の結果が pdfTeX に渡されていた。ここを,元のPDFのCropBoxのサイズを渡すことにすればよい。(B) gsを通す経路の場合
従来の変換経路は
であった。これらの経路においては,「gs(eps(2)write)でアウトライン化+クロップ」を行った直後に,生成したEPSのBBox情報を,元のPDFのCropBoxで上書きすればよい。(2. においては,後半の「pdfcrop類似処理で余白付与」の部分はクロップせぬよう (A) と同じ処理を利用する。)
The text was updated successfully, but these errors were encountered: