2

Apache Fop 1.0 を使用して PDF ドキュメントを作成しています。デフォルトでは、FlateFilter を使用してコンテンツを圧縮します。FOP は、隠れて DeflaterOutputStream DEFAULT_COMPRESSION を使用します。BEST_COMPRESSION に設定する可能性はありません。

PDFには、Barcode4j 2.1によって生成されたバーコードも含まれています。生成された画像は非常に大きく、圧縮方法に関する情報は見つかりませんでした。

<fo:instream-foreign-object height="25pt" width="101pt">
   <barcode:barcode xmlns:barcode="http://barcode4j.krysalis.org/ns" message="xxxxxxxx">
     <barcode:code128>
       <barcode:height>37pt</barcode:height>
       <barcode:module-width>0.9pt</barcode:module-width>
       <barcode:human-readable>
         <barcode:placement>none</barcode:placement>
       </barcode:human-readable>
     </barcode:code128>
   </barcode:barcode>
</fo:instream-foreign-object>

PDF を生成すると (fop で flate を使用し、上記のバーコード インジェクションを使用して)、シンプルな winzip で pdf サイズを 30% 減らすことができます。

私のプロセスでより良い圧縮アルゴリズムを使用する方法はありますか? PDF は Acrobat Reader で開くことができる必要があるため、サーバー側で圧縮してクライアント側で解凍することはできません。

barcode4j で生成された画像は圧縮できると思いますが、その方法がわかりません。

Update1: 生成されたバーコードが大きすぎるようです。PDF には 3 ページと 3 つのバーコードが含まれています。3 つのバーコードは、pdf サイズ全体の約 50% です。

ありがとう

ゾルタン

4

1 に答える 1

1

デフォルトの圧縮設定と最大圧縮設定の間に大きな違いはありません。ZLib を知っている場合は、いくつかのテスト コードを記述して確認することができます。サイズが 30% 小さくなる理由は、圧縮がファイル全体に適用されるためです。PDF では、ストリームのみが圧縮されます。

圧縮されたオブジェクト ストリームを使用すると、サイズを大幅に削減できます。FOP はサポートしていませんが、多くのツールがサポートしています。さらに詳しい情報が必要な場合は、こちらを参照してください。

于 2011-03-03T02:52:38.307 に答える