PDF透明度の統合


11

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

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

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

または

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

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

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

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


2
興味深い質問です。形状の可能なすべての交差が複合塗りつぶしで新しい不透明な形状を作成する必要があるため、svgを平坦化することは非常に複雑になります。
artfulrobot 2012年

@artfulrobotその通りです。結果として得られるベクトルグラフィックは、一般に非常に複雑になる可能性があります。ただし、多くの一般的なベクターラインアートグラフィックの場合でも、結果は最新のPostscriptプリンターでうまく機能します。

私が見つけた最良の方法は、最初のステップの後に再描画するという手間のかかる手動の方法です。inkscapeを使用してpdfをsvgに変換し、svgを適切なテキストエディターで開きます。「opacity:[0] [0-9 \。]」のすべての出現箇所を「opacity:1」(正規表現バージョン)で置き換えるか、「opacity:0」を見つけます。手動で不透明度1(面倒なバージョン)に置き換えます。svgをinkscapeで開き、pdf(eps)に戻るよりも、見栄えをよくする(難しい部分)ようにします。
Chris H

回答:


6

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

pdftops -r 1200 document.pdf解像度を低いデフォルトの300から上げて、結果のポストスクリプトを印刷してみてください。ただし、プリンタが動作している場合、これによる大きな改善はありませんでした。透明な画像がある場合とない場合の通常のテキストは、まだぼやけているかはっきりしているように見えます。

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

この問題をLinuxのみで解決できると便利です。


1

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

私は多くのことを試みたが、これまでのところ、私はインターネット上で見つけた最高の作業溶液を用いて画像として完全にPDFのレンダリングされたpdf2psps2pdf13、しかしので結果は、私にとっては満足のいくものではなかった全てのベクターシェイプが失われました。重要な部分だけをレンダリングし、ベクターグラフィックスは保持したいと思っていました。

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

TL; DR:

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

0

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


1
問題は透明な背景ではなく、白い背景を追加しても解決しません。画像の質問では、他の(不透明)図形の上に半透明の図形を使用しています。SVGとPDFはこれをサポートしていますが、PSはサポートしていません。
2012年

0

Ubuntu / Gimpを使用してPDFファイルを開き、印刷プレビューを毎回確認しながら一度に1ページずつ印刷しました。


-1
pdftops -origpagesizes input.pdf output.ps

その後

ps2pdf -r600x600 output.ps input-new.pdf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.