圧縮の概要

概要

HotPDF は、新しい PDF コンテンツを生成するか、外部ファイルから既存のストリームと画像を読み取るかに応じて、いくつかの圧縮および解凍パスを使用します。

主な圧縮パス

  • FlateDecode: THotPDF.Compression 経由で生成 PDF streams に使用され、zlib-compatible mode の zlib-ng に backed されます。利用可能な場合は 64-bit runtime SIMD dispatch を使用します
  • CompressionLevel: THotPDF.CompressionLevel selects clNone, clFastest, clDefault, or clMaximum for enhanced Flate paths.
  • LZWDecode: HPDFLZW.pas を介したレガシー PDF および TIFF スタイルのデータのサポート
  • DCT/JPEG: HotPDF の画像サポートによって処理され、NASM SIMD アクセラレーションオブジェクトを備えた libjpeg-turbo 3.1.90 によってサポートされる標準の JPEG 画像ワークフローに使用されます。
  • JBIG2 と JPEG2000: ソース形式がすでにそれらのコーデックを使用している特化した画像ワークフローで利用できます。

PDF 1.5+ 構造的なサイズの縮小

PDF 1.5+ の出力では、HotPDF は FlateDecode で圧縮されたストリームの上に、さらに 2 つの構造的な圧縮パスをレイヤー化できます。どちらもオプトインであり、自然にペアになります。

  • UseXRefStream: Replace the textual xref ... trailer cross-reference table with a compressed /型 /XRef stream (ISO 32000-1 7.5.8). Cuts xref overhead by 4-10x on large documents.
  • UseObjectStreams: small indirect dictionaries (multi-page documents、annotations、AcroForm widgets、structure-tree elements、Optional Content layers) を /Type /ObjStm container streams (ISO 32000-1 7.5.7) に pack し、type-2 xref entries 経由で参照します。UseXRefStream も on である必要があります。30-page graphics-only smoke では 2 つの toggles を組み合わせることで 14502 bytes から 8488 bytes に縮小します (-41.5%)
  • Copy decompression: DecompressForCopy and OriginallyCompressed describe how loaded-document copy paths materialize compressed source streams.

関連ユニット

  • FlateDecode およびプレディクタ対応のインフレートヘルパー用の HPDFZLib.pas
  • LZW 解凍用の HPDFLZW.pas
  • JBIG2 デコードサポート用の HPDFJBIG2.pas
  • JPEG2000 関連のワークフロー用の HPDFJpeg2000.pas および HPDFOpenJpeg.pas

関連項目