|
Compression Overview
概要
HotPDF は、新しい PDF コンテンツを生成するのか、外部ファイルから既存のストリームや画像を読み込むのかに応じて、複数の圧縮 / 展開パスを使い分けます
主な圧縮パス
- FlateDecode: 生成する PDF ストリームには THotPDF.Compression 経由で使われ、zlib 互換モードの zlib-ng がバックエンドです。利用可能な環境では 64 ビットランタイム SIMD ディスパッチが働きます。ロード済みストリームの高圧縮率ワークフローでは、予算付きの Zopfli パスを追加でき、これは zlib の最良結果より小さくなる場合にだけ選ばれます
- CompressionLevel: THotPDF.CompressionLevel が拡張 Flate パスに対して
clNone、clFastest、clDefault、clMaximum を選択します
- LZWDecode: レガシーな PDF や TIFF 系データに対して HPDFLZW.pas 経由でサポートされます
- DCT/JPEG: HotPDF の画像サポートが扱う標準 JPEG ワークフローに使われ、NASM SIMD アクセラレーションオブジェクト付きの libjpeg-turbo 3.1.90 がバックエンドです
- JBIG2 と JPEG2000: ソースフォーマットが既にそれらのコーデックを使っている特殊な画像ワークフローで利用できます
PDF 1.5+ での構造的なサイズ削減
PDF 1.5+ の出力では、FlateDecode 圧縮ストリームの上に、さらに 2 つの構造圧縮パスを重ねられます。どちらもオプトインで、自然に組み合わせられます:
- UseXRefStream: テキストの
xref ... trailer クロスリファレンステーブルを、圧縮された /Type /XRef ストリーム(ISO 32000-1 7.5.8)に置き換えます。大きなドキュメントで xref のオーバーヘッドを 4〜10 分の 1 に削減します
- UseObjectStreams: 小さな間接辞書(複数ページドキュメント、注釈、AcroForm ウィジェット、構造ツリー要素、Optional Content レイヤー)を、type-2 xref エントリで参照される
/Type /ObjStm コンテナストリーム(ISO 32000-1 7.5.7)に詰め込みます。UseXRefStream も同時に有効である必要があります。グラフィックスのみの 30 ページのスモークテストでは、2 つのトグルの組み合わせで 14502 バイトから 8488 バイト(-41.5%)へ縮みます
- コピー時の展開: DecompressForCopy と
OriginallyCompressed が、ロード済みドキュメントのコピーパスが圧縮ソースストリームを実体化する方法を記述します
関連ユニット
- HPDFZLib.pas — FlateDecode とプレディクター対応 inflate ヘルパー
- HPDFLZW.pas — LZW 展開
- HPDFJBIG2.pas、HPDFJBIG2Codec.pas、HPDFJBIG2Enc.pas — JBIG2 エンコードとデコード
- HPDFJpeg2000.pas と HPDFOpenJpeg.pas — JPEG2000 関連ワークフロー
関連項目
|