web-dev-qa-db-ja.com

印刷PDF TrueTypeフォントが埋め込まれていない(cups / lpr)

TrueTypeフォントOCRBが使用されているPDF)がありますが、フォントは埋め込まれていません。

そこで、システムにフォントをインストールしようとしました(ちなみに、SLES11 SP2です)。次のことを行いました。

  • Gnomeデスクトップのフォントをダブルクリックし、インストールをクリックしました
  • /user/home/username/.fontsフォルダーにコピーしました
  • /usr/share/fontsにコピーしました
  • ルートあり:SuSEconfig --module fonts
  • fc-cache

次のコマンドで.pdfを印刷しようとすると:

lpr -PHL2400Ce -# 1 test.pdf

.pdfは問題なく印刷されますが、OCRBフォントはなくなり、標準のフォントに置き換えられます。

ただし、.pdfをevince(gnomeドキュメントビューア)で開くと、ビューアにOCRBフォントが表示され(正しい)、印刷すると(同じプリンタで)、そこに表示されます。絶対に正しい。

evinceも何らかの方法でlprを使用していると思うので、これはわかりません。私にできることはありますか? (.pdfはバックグラウンドで実行されるバッチジョブの一部になるため、コマンドラインから.pdfを印刷できることは私にとって非常に重要です)

私はまた、このようないくつかのアプローチを試しました:

gs -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sPAPERSIZE=letter -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=output2.pdf -f test.pdf

これは私に出力をもたらします:

....
Can't find (or can't open) font file Arial-BoldMT. 
Didn't find this font on the system!
Substituting font Helvetica-Bold for Arial-BoldMT.
Substituting font Helvetica for OCRB

つまり、ここで私が見ているのは、Can't find or can't open font...のようにメッセージArial-Boldがない場合でも、gsHelveticaの代わりにOCRBを使用するということです。理由は何ですか?

5
tenhouse

プリンターレンダラーにもフォントを追加する必要があります。プリンターレンダラーフォントライブラリの正しいフォルダーを見つけるのは難しいですが、CUPS/Ghostscript/lpr構成のすべてを調べるとその場所が見つかります。フォントのインデックスの再作成が必要な場合があり、CUPSとGSの両方にそのためのスクリプトがあります。

Evinceがそれをうまく印刷した理由は、わずかな強制で、基本的にすべてのものをベクトルとして事前レンダリングするように指示したためです。

これは少し不必要に複雑です。これは主に、これらのモジュラーパーツが別々に生まれ、システムレベルで発生する収束が最近発生したためです。

Appleは内部でCUPSを使用しており、フォントのインストールの問題をなんとか解決しました。詳細は確認していませんが、基本的にはシステム全体の中央フォントライブラリを使用するか、フォントをGUIとCUPSの両方のフォントパスにコピーします。彼らはコピーしないと思いますが、共通のフォントパスをサポートするようにソフトウェアを変更しました。

1
temmi hoo