2016-04-03 4 views
0

ブラウザベースのビジュアルエディタを含むプロジェクトの一部として、fabric.jsを使用してSVGファイルを作成し、PDFファイルに変換します。PDFファイルでのグラフィックアセットの再利用

場合によっては、生成されたPDFファイルがドキュメント全体に何度も現れる同じイメージを持つため、膨大かつ不必要なファイルが膨大になり、PDFファイルが非常に大きくなります。

SVGでは、これは単一の<image>要素を使用し、<use>要素(previous questionで回答)と再利用することで簡単に修正できます。 Inkscapeを使用してSVGをPDF形式に変換すると、Inkscapeはドキュメント内のすべての外観に対して繰り返しイメージを再埋め込みするので、ヒントを得られないようです。

Smallpdf.comのPDFコンプレッサーツールはこの問題を修正できると思われますが、どのように正確にこれを行うのかわかりません。この最適化をInkscapeや私が知っている他のツールで再現することもできません。

このテクニックの名前はありますか、それとももっと自分自身でこれを複製する方法がありますか? PDFのXObjectがこれにふさわしいツールだと読んでいますが、私はそれを自分で実装する方法も実際の例も見つけられません。

+0

この例のPDF文書はありますか?私はこれがPDFでXObjects(SVGに似ています)でどのように動作するかを説明する一般的な回答を追加しますが、これがファイルに適用可能かどうかを知るには、ファイルが実際にどのように作成されるかを調べる必要があります。 –

+0

@DavidvanDriesscheありがとう、私はまもなく例を準備し、投稿します。 – Pepe

答えて

1

一般に、PDFは実際にはXObjectsを使用して非常によく似た方法でSVGと同じ機能を提供します。

XObjectを使用して、ページコンテンツの一部である画像またはグラフィックス演算子のグループを定義することができます。それは名前とそれ自身のコンテンツストリームを取得し、スタンドアロンのコンテンツにするための独自のリソースを持っています。このXObjectは、「Do」演算子を使用してページコンテンツに含めることができます。これは、SVGで「使用」と記述したものと非常によく似ています。

理論上、XObjectはPDFファイルに1回出現した後、PDFファイルのファイルサイズを大幅に増やすことなく、ドキュメント全体で複数回使用することができます。これが起こるかどうかは、PDF作成ライブラリまたはPDFライブラリの最適化機能によって異なります。

たとえば、Adobe PDFライブラリでは、XObjectsで繰り返されるコンテンツが最適化されるようにPDFファイルを最適化することができます.XObjectのコピーは1つしか残っておらず、ページ記述でそのXObjectを使用すると、オブジェクト。私は、ファイルサイズが複数のギガバイトのデータから可変データシナリオの1メガバイト未満に削減された例を見てきました。これを使用するためには

、次のものが必要です。

  • 正しく作成したりするのに十分なスマートであることができ、繰り返しコンテンツが実際にのXObject
  • PDFジェネレータまたはプロセッサに含まれているPDFファイルPDFファイルを最適化してこれを活用する
関連する問題