web-dev-qa-db-ja.com

平坦化PDF透明性

Inkscapeで作成された、透明色を使用したPDFがあります。この画像は、LaTeXドキュメントで使用されます。

透明度を維持することは編集には適していますが、印刷には問題になる場合があります。通常、印刷にはPDFからPSへの変換が含まれます。 Postscriptは透明度をサポートしていないため、次のいずれかが必要です。

  • フラット化、つまり透明度なしで機能するベクターグラフィックの作成

または

  • ラスター化、つまりビットマップ画像のレンダリング。

このような図を含むPDFドキュメントをEvince(またはCairoまたはGhostscript)を使用して印刷(またはPSに変換)すると、ページ全体がビットマップとしてレンダリングされ、フォントがrenderingい(他のページとは異なります)レンダリングされます。 (Adobe Acrobatは、このようなPDFを適切に処理します。)

残念ながら、PDF図をEPSに変換する(LaTeXに含める前)ことはあまり役に立ちません。pdftopsとpdf2ps(もう一度、CairoまたはGhostscript)の両方が画像をラスタライズする、つまりビットマップをレンダリングする( EPS)。 (これはページ全体に影響を与えないため、わずかに優れていますが、ベクターグラフィックスの方が好きです。)

InkscapeまたはLinux上の他のソフトウェアで透明度をフラット化するにはどうすればよいですか?

10
Jan

悪いラスタ化を回避する1つの方法は、PDFドキュメントを手動でpostscriptに変換することです。これは、evinceまたはguiを介してCUPSを呼び出すと、とにかく変換​​されるためです。

pdftops -r 1200 document.pdfを試して、低いデフォルトの300から解像度を上げてから、結果のポストスクリプトを印刷できます。しかし、仕事中のプリンターでは、これは大きな改善をもたらしませんでした。透明な画像がある場合とない場合のページの通常のテキストは、まだ異なって見えました-ぼやけている対明確です。

そこで、最終的には、Acrobat Professional(Windowsマシン上)を使用して、ラテックスドキュメントで使用されている透明な画像を平坦化し、最適な結果を得ました。 Transparency Flattener Presetが高度な印刷設定の[High Resolution]にあることを確認します。私の同僚は、ポストスクリプト変換をバイパスして、おそらく最新のレーザージェットネットワークプリンターに直接pdfファイルをFTP送信できると述べました。私はこれを試していません。

この問題に対するLinux専用のソリューションがあれば素晴らしいと思います。

5
Fred Schoen

私は同じ問題を抱えていましたが、これは私の解決策です(将来の参考のために):

私は多くのことを試してみましたが、これまでインターネットで見つけた最良の解決策は、PDFをpdf2psps2pdf13で完全にイメージとしてレンダリングすることでしたが、 allベクトル形状が失われたため、私にとっては満足のいくものではありませんでした。重要な部分だけをレンダリングしたかったが、ベクターグラフィックスは保持したかった。

私にとってのトリックは、inkscapeのすべての重要な部分を分離し、それらを別のレイヤーに置くことでした(私の画像では、これはすべて影でした)。このレイヤー(および背景レイヤー)のみを表示し、PNGにエクスポートして、すべての透明効果のみを効果的にレンダリングしました。インポートして戻し、新しいレイヤーで使用しました。すべてのレイヤーの可視性を切り替えた後(透明レイヤー:オフ、その他すべて:オン)、エクスポートされたPDFはLaTeXで完全に機能し、ページ全体を画像としてレンダリングせずに印刷できました。

TL; DR:

  1. 問題のあるすべてのOHPフィルムを1つのレイヤーに分離します(透明マスク、シャドウなど)
  2. 問題のあるレイヤーと背景のみを表示する
  3. PNGにエクスポート
  4. 作成したばかりのPNGをインポートし、背景として使用します
  5. 問題のあるレイヤーを除くすべてのレイヤーを表示します
  6. PDFにエクスポート
  7. 笑顔:)
1
Edgar

1つの方法は、Inkscapeでページと同じサイズの白いボックスを作成し、それを最下層に送信することです。これにより、透明な画像ではなく白い背景で画像がエクスポートされます。

0
brousch