PDF object compression
PDFオブジェクト圧縮は、PDF仕様で定義されているメカニズムであり、PDFドキュメント内の個々のオブジェクトまたはオブジェクトのグループを圧縮することでファイルサイズを削減します。
PDFオブジェクト圧縮は、PDF仕様で定義されているメカニズムであり、PDFドキュメント内の個々のオブジェクトまたはオブジェクトのグループを圧縮することでファイルサイズを削減します。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) によると、PDFファイルはストリームオブジェクトやクロスリファレンスストリームなど、さまざまなタイプのコンテンツオブジェクトに対して各種圧縮技術を適用できます。この圧縮はオブジェクトレベルで行われ、PDFドキュメント全体に適用される外部ファイル圧縮とは区別されます。
PDFオブジェクト圧縮とは、PDFオブジェクト、特にストリームオブジェクトに適用されるエンコーディング方式を指し、PDFファイル構造内でのストレージフットプリントを最小化します。PDF仕様は複数の圧縮アルゴリズムをサポートしており、Flate(zlib/deflateアルゴリズムに基づく)が最も一般的です。オブジェクト圧縮は、描画命令を含むページコンテンツストリーム、画像データ、埋め込みフォント、メタデータストリームなどの個々のコンテンツストリームに適用できます。
PDF 1.5で導入された重要な機能として、オブジェクトストリーム(object streams)があります。これにより、複数の間接オブジェクトを単一のストリームオブジェクト内で一緒に圧縮できます。これは、各ストリームが独立して圧縮される標準的なストリーム圧縮とは異なります。オブジェクトストリームは、ページディクショナリ、注釈ディクショナリ、その他の構造要素など、個別では圧縮効率が低い小さなオブジェクトの圧縮に特に効果的です。
PDFオブジェクト圧縮は、PDFファイル全体に適用される一般的なファイル圧縮(ZIPなど)や、画像データがPDFオブジェクトの一部になる前に圧縮する特定の画像圧縮コーデック(JPEGやJPEG2000など)と混同しないでください。
PDF生成や操作を行う開発者にとって、オブジェクト圧縮の理解は以下の理由から重要です。
パフォーマンスの最適化: 適切に圧縮されたPDFは、ビューアでの読み込みが速く、ネットワーク経由での転送も効率的です。これはWebアプリケーションやドキュメント管理システムにおけるユーザーエクスペリエンスに直接影響します。
ストレージ効率: 数千、数百万のPDFドキュメントを扱うエンタープライズシステムでは、効果的なオブジェクト圧縮によりストレージコストとバックアップ時間を大幅に削減できます。
処理上の考慮事項: PDFをプログラム的に読み取りまたは変更する際、開発者はオブジェクトの解凍と再圧縮を処理する必要があります。ライブラリやツールは、コンテンツにアクセスするためにオブジェクトを解凍する必要があり、これは処理速度とメモリ使用量に影響します。
互換性: 異なる圧縮方式は、PDFバージョンやリーダーアプリケーションによってサポート状況が異なります。開発者は、対象とするPDFバージョンと予想されるリーダーの機能に基づいて、適切な圧縮戦略を選択する必要があります。
PDFオブジェクト圧縮は、ドキュメント構造内の複数のレベルで動作します。
ストリームオブジェクト圧縮: 個々のストリームオブジェクトは、ディクショナリの/Filterエントリを使用して圧縮フィルタを指定できます。一般的なフィルタには、/FlateDecode(zlib圧縮)、/LZWDecode、/DCTDecode(JPEG)、/JPXDecode(JPEG2000)などがあります。PDFリーダーは圧縮されたストリームに遭遇すると、指定された解凍フィルタを適用して実際のコンテンツにアクセスします。
オブジェクトストリーム: PDF 1.5で導入されたオブジェクトストリーム(タイプ/ObjStm)により、複数の間接オブジェクトを単一の圧縮ストリーム内に格納できます。これは、個別では圧縮効率が低い小さなオブジェクトに特に効率的です。オブジェクトストリームには、オブジェクト番号とバイトオフセットのシーケンスが含まれ、その後に連結されたオブジェクト定義が続き、すべてが一緒に圧縮されます。これにより、多くの小さな構造オブジェクトを持つ典型的なドキュメントでは、ファイルサイズを20〜50%削減できます。
クロスリファレンスストリーム: PDF 1.5では、従来のクロスリファレンステーブルを置き換える圧縮クロスリファレンスストリーム(/XRefストリーム)も導入されました。これらのストリームには同じインデックス情報が含まれますが、ASCIIではなく圧縮されたバイナリ形式で格納されます。
圧縮パラメータ: 開発者は通常、PDFライブラリAPIを通じて圧縮レベルと方式を制御できます。高い圧縮レベルはより多くの処理時間を必要としますが、より小さなファイルを生成します。一方、低いレベルは圧縮が速いものの効率は劣ります。
PDF生成を実装する際、開発者は通常、PDFライブラリのAPIを通じてドキュメントまたはオブジェクトレベルで圧縮設定を構成し、ライブラリが実際の圧縮とPDF構造内の適切なフィルタ指定を処理します。
- PDFストリームオブジェクト(PDF stream object) – シーケンスデータを含み、圧縮可能なPDFオブジェクトタイプ
- PDFクロスリファレンステーブル(PDF cross-reference table) – 最新のPDFでは圧縮ストリームとして格納できるインデックス構造
- Flate圧縮(Flate compression) – deflateアルゴリズムに基づく、PDFオブジェクト圧縮で最も一般的に使用される圧縮アルゴリズム
- PDFオブジェクトストリーム(PDF object stream) – 複数の圧縮された間接オブジェクトを含む特殊なストリームタイプ
- PDFフィルタ(PDF filter) – 圧縮および解凍方式を含む、ストリームデータに適用される処理操作
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
