Closed doraTeX closed 8 years ago
こんな感じでしょうか(2ページ目)
EPS 出力の場合だけ、pdfTeX で余白付与しても eps2write で結局クロップされてしまうのでまずいですね。EPS の場合だけ従来どおり「gs または mudraw で bbox 取得 → pdfTeX で背景色塗り → gs の eps2write → BoundingBox を取得した値(+余白)で上書き」にする必要があります。
Windows 版もビットマップ画像出力をすべて pdfiumdraw 経由に移すということですね。いままでずっと変えたら何が起きるかわからないから怖かったのですが、gs で EPS 経由するより格段に速いはずですし、この際 gs のバージョンに依らず pdfiumdraw に一本化してしまってよい気がしました。
Windows 版もビットマップ画像出力をすべて pdfiumdraw 経由に移すということですね。いままでずっと変えたら何が起きるかわからないから怖かったのですが、gs で EPS 経由するより格段に速いはずですし、この際 gs のバージョンに依らず pdfiumdraw に一本化してしまってよい気がしました。
そう思ったのですが,「アウトラインを入れない」という選択肢があるのでやっぱり従来通りにしようかと.新しいのです.
「アウトラインを入れない」という選択肢があるのでやっぱり従来通りにしようかと.
なるほど、現状の「PDF →[eps(2)writeアウトライン化]→ EPS →[BB編集]→[pngalpha等]→ ビットマップ」だとアウトライン化自体に意味はないので、そこをスキップして直接ビットマップ化すればよいわけですね。賛成します。
もうひとつ、「gs9.15 以上の pdfwrite で直接アウトライン化」と「eps2write でアウトライン化 + BB 編集でページサイズ維持 + pdfwrite (epstopdf) で PDF に戻す」には大きな違いがありますね。EPS 経由では出てくる PDF には MediaBox しかなかったのですが、pdfwrite 単独では元の PDF に明示されている ナントカBox が(MediaBox の左下を (0,0) に合わせて再計算されて)複数残ってしまいます。ということは、pdfwrite を使う場合はなんであれ、一回は pdfTeX をかませたほうがよいことになります(たとえページサイズ維持でも、pdfwrite だけで済んだとはみなせません)。
一通り実装できました。
ただし,shadows への対応としてはまだ十分ではないようです。 どうも,Ghostscript のみならず,pdfTeX も半透明PDFのロードを苦手としているように見えます。
このテストファイル一式をご覧ください。
test1.tex
:変換元のTeXソースtest1.pdf
:pLaTeX + dvipdfmx の出力test1-pdfcrop.tex
:test1.pdf
に対して pdfTeX によって pdfcrop 類似処理を行うためのソース。クロップ+余白10bpを付与の設定。test1-pdfcrop.pdf
:pdfTeX による処理結果。見た目上,影が失われているように見える。test1-pdfwrite.pdf
:test1-pdfcrop.pdf
を Ghostscript の pdfwrite でアウトライン化した結果。なぜか元影だった部分が真っ黒に塗りつぶされる。test1-pdfcrop.pdf
から test1-pdfwrite.pdf
への変換コマンドは以下の通りです。(gs 9.16 で実験)
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dNoOutputFonts -r20016 -sOutputFile=test1-pdfwrite.pdf -dFirstPage=1 -dLastPage=1 -dAutoRotatePages=/None -c .setpdfwrite -f test1-pdfcrop.pdf
test1-pdfcrop.pdf :pdfTeX による処理結果。見た目上,影が失われているように見える。
これは手元の Adobe Reader XI では正常のようです。Windows で見ています。
test1-pdfwrite.pdf : test1-pdfcrop.pdf を Ghostscript の pdfwrite でアウトライン化した結果。なぜか元影だった部分が真っ黒に塗りつぶされる。
これも手元の Adobe Reader XI では特に変化なしで、正常に見えます。ビューアは何でしょうか?
あ,本当ですね。こちらでも Adobe Acrobat から見れば,どちらのファイルも正常に見えました。 Preview.app も半透明PDFの表示は苦手としていることを忘れていました。 Illustrator で作った図版についても,半透明を使用すると,「Acrobat から見ると綺麗に見えるのに Preview で開くと半透明部が消えたりつぶれたりする」現象は,これまでもよく出会っていました。 では,現状で問題なさそうですね。
あと少しだけ,特殊なケースについての対処を行えば,ベータ版として公開できそうです。
そういえば、Mac 版では「EPS / EMF 以外の出力」だけでなく、「pdftops を経由したテキスト形式の EPS」もgs9.15 以上に限定した処理ですので、pdfwrite で一発アウトライン化したほうがきれいになるのでしょうか?
既にそのように変更済みです😏
さすがです😏 pdfwrite と eps2write のアウトライン化品質が変わらないとすれば、これは「pdftops 経由の EPS 生成」を(テキスト目的でなくとも)敢えて選択するインセンティブができました。「なんだか eps2write でうまくいかないぞ」というときに、pdftops を選択できるのは大きいです。
「eps2write を避ける」ことをメリットと考えるならばそうなりますね。 ただし,結局は pdftops も「半透明PDFのEPS化」は苦手としているようで,ぼやけたビットマップ画像を出力してしまうみたいです。ですから,EPS出力の際に eps2write を避けるメリットはあまりなさそうです。
結局は pdftops も「半透明PDFのEPS化」は苦手としているようで
そうなのですね… ではあまり変わらないか。ありがとうございます。
極力 eps2write を使うことを避けた,Ver. 2.1.3 beta 2 を作成できました。
考えるパターンが多くなってきましたので,テスト を作成しました。 出力結果が期待通りかどうかは目で全部チェックする必要がありますが,「パターンの考え忘れ」が防ぎやすくなることでしょう。
すみませんが、一週間ほどテストできる余裕がないため、落ち着いてから試してみます。その前にリリースしていただいてかまいません。
承知しました。 今回いろいろ経路をいじったので、もう少し入念にテストしてからリリースします。 gs 9.15 未満の場合とか、回転PDF入力時とか、ページサイズ維持とか、作業ディレクトリや出力ファイル名にスペースが含まれる場合とかの網羅的チェックがまだですので。
Snow Leopard 版も追従させ,#65 (SVGアニメーション生成)と合わせて,Ver. 2.1.3 / 1.11.3 としてリリースしておきました。
Ver. 2.1.3 / 1.11.3 としてリリースしておきました。
Mac 版、お疲れ様です。後日ゆっくり使わせていただきながら確認してみます。(解説記事もだいぶ書き変えないといけないので、そのついでに見ておきます)
やってみました.pdfiumdrawも更新しています.今までEPSとPDF中心が混在していたのがなくなってすっきりした気がします.簡単なテストを走らせてみつかったミスはつぶしたつもりですが,もう少しテストしてみます.経路図は実装にあわせて書き換えました.
version 9.15での分岐の部分はeps2writeが指定されているかどうかで分けています.9.14だとeps2writeがあるのでまずいのですが…….(後で考えます.)
やってみました.
ゆっくりテストする余裕がないのですみません… 今度ゆっくり試します。と言いながら、とりあえずダウンロードして(セミナー準備がてら)動かしたところ、テキスト保持とアウトラインが逆さになってしまったみたいです。
あーやっぱりやってしまっていますか……経路図に「wtext」と書きながら内部ブール値はOutlinedTextなのでですね…….こちらも急げないのでゆっくりやります.
63 の議論から分岐。
TikZ の shadows ライブラリなどのアウトライン化をサポートするため,
の場合については,「pdfcrop類似処理の後に pdfwrite + NoOutputFonts のコンボ」にするのがよさそう。