簡単に言えば、問題のある PDF を扱っています。
evince
フォント情報が欠落しているため、 のようなドキュメント ビューアーでは完全にレンダリングできません。- ただし
ghostscript
、同じ PDF を完全にレンダリングできます。
ghostscript
したがって、空白を埋めるために何を使用するかに関係なく(おそらくフォールバックグリフ、またはフォントにアクセスする別の方法ghostscript
)、出力PDFを生成(「蒸留」)するために使用できるようにしたいと思います。追加されたフォント情報以外は何evince
も変更されないため、同じドキュメントを同じ方法でレンダリングghostscript
できます。
したがって、私の質問は-これはまったく可能ですか?もしそうなら、そのようなことを達成するためのコマンドラインは何でしょうか?
ご回答ありがとうございます。
乾杯!
詳細:
私は実際には古い Ubuntu 10.04 を使用していますが、バグではなく、インストールの問題(パッケージevince
の不足) が発生している可能性があります。 ..」: バグ: 「poppler」パッケージ: Ubuntu .poppler-data
ただし、それはまさに私が扱いたいものなので、fontspec.pdf
その投稿に添付されているものを使用します ( 「バグをトリガーする PDF」、// v. ) 。問題。
evince
まず、この pdf のページ 3 をevince
;で開きます。とevince
不平を言う:
$ evince --page-label=3 fontspec.pdf
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Unknown font tag 'F5.1'
Error (7597): No font in show
Error: Unknown font tag 'F5.1'
Error (7630): No font in show
Error: Unknown font tag 'F5.1'
Error (7660): No font in show
Error: Unknown font tag 'F5.1'
...
レンダリングは次のようになります。
...そして、いくつかのフォント形状が欠落していることは明らかです。
アドビacroread
Adobe の Acrobat Reader for Linux の動作についてのメモです。次のコマンドライン:
$ ./Adobe/Reader9/bin/acroread /a "page=3" fontspec.pdf
...端末への出力はまったく生成されません(スイッチの詳細については、Manページ acroread/a
を参照してください)-そして、プログラムはフォントを表示する上でまったく問題ありません。
また、postscript への往復を避けたいのですが、acroread
それ自体を使用して PDF を postscript に変換できることに注意してください。
$ ./Adobe/Reader9/bin/acroread -v
9.5.1
$ ./Adobe/Reader9/bin/acroread -toPostScript \
-rotateAndCenter -choosePaperByPDFPageSize \
-start 3 -end 3 \
-level3 -transQuality 5 \
-optimizeForSpeed -saveVM \
fontspec.pdf ./
繰り返しますが、上記のコマンド ラインでは端末への出力は生成されません。-optimizeForSpeed -saveVM
どうやらフォントを扱っているためです。最後の引数./
は出力ディレクトリです (出力ファイルは自動的に呼び出されますfontspec.ps
)。
これで、以前に欠落していたフォントを出力に表示evince
できfontspec.ps
ますが、再び不平を言います:
$ evince fontspec.ps
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
...
...さらに、すべてのテキストはポストスクリプトの曲線に平坦化されているように見えるため、.ps ファイル内のテキストを選択することはevince
できなくなりました (.ps ファイルは では開けないことに注意してくださいacroread
)。ただし、この .ps を .pdf に再度変換できます。
$ pstopdf fontspec.ps # note, `pstopdf` has no output filename option;
# it will automatically choose 'fontspec.pdf',
# and overwrite previous 'fontspec.pdf' in
# the same directory
...そして、出力のテキストpstopdf
は で選択可能になりevince
、すべてのフォントがそこにあり、evince
もう文句はありません。ただし、前述のとおり、postscript ファイルへのラウンドトリップは完全に避けたいと思います。
display
(からimagemagick
)
imagemagick
sを使用して同じドキュメント内のページを観察することもできますdisplay
( 「display」を使用したコマンドラインからの画像のパンニングは明らかにまだ利用できないことに注意してください。そのため、以下を使用してビューポートを調整しました-crop
)。
$ display -density 150 -crop 740x450+280+200 fontspec.pdf[2]
**** Warning: considering '0000000000 00000 n' as a free entry.
...
**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
...いくつghostscrip
かのっぽいエラーが生成されます-そして、次のような結果になります:
evince
...レンダリングできなかった欠落フォントがimagemagick
sdisplay
で適切にここに表示されていることは明らかです。
ghostscript
最後に、ghostscript を x11 ビューアー自体として使用して、同じページ、同じドキュメントを観察できます。
$ gs -sDevice=x11 -g740x450 -r150x150 -dFirstPage=3 \
-c '<</PageOffset [-120 520]>> setpagedevice' \
-f fontspec.pdf
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 74.
Page 3
>>showpage, press <return> to continue<<
^C
...そして、次の出力が得られます。
結論としてghostscript
、(そして明らかに拡張によりimagemagick
)は、欠落しているフォント(または少なくともそれに代わるもの)を見つけてevince
、同じドキュメントで失敗したとしても、それを使用してページをレンダリングできます。
したがって、ghostscript
不足しているフォントのみが埋め込まれ、他の処理が行われない PDF バージョンを からエクスポートしたいと思います。だから私はこれを試します:
$ gs -dBATCH -dNOPAUSE -dSAFER \
-dEmbedAllFonts -dSubsetFonts=true -dMaxSubsetPct=99 \
-dAutoFilterMonoImages=false \
-dAutoFilterGrayImages=false \
-dAutoFilterColorImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-sDEVICE=pdfwrite \
-dFirstPage=3 -dLastPage=3 \
-sOutputFile=mypg3out.pdf -f fontspec.pdf
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
**** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 3.
Page 3
**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
...しかし、うまくいきません。出力ファイルmypg3out.pdf
は、前述のとおり、まったく同じ問題に悩まされてevince
います。
注: ポストスクリプトのラウンドトリップは避けたいと思いますがgs
、フォント埋め込みを使用した from pdf to ps のコマンド ラインの良い例を次に示します。しかし、同じコマンド ラインで .pdf から .pdf に切り替えても、上記の問題には影響しないようです。