PDF stream compression
PDF stream圧縮は、圧縮アルゴリズムをコンテンツに適用することで、PDFファイル内のstreamオブジェクトのサイズを削減する技術です。
PDF stream圧縮は、圧縮アルゴリズムをコンテンツに適用することで、PDFファイル内のstreamオブジェクトのサイズを削減する技術です。Streamは、ページコンテンツ、画像、フォント、メタデータなど、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 stream圧縮とは、PDFファイルに保存する前に、圧縮アルゴリズムを使用してstreamオブジェクトのデータをエンコードするプロセスを指します。PDFのstreamオブジェクトは、メタデータと属性を含む辞書と、その後のstreamとendstreamキーワードの間にある実際のデータコンテンツで構成されます。圧縮はstream辞書の/Filterエントリによって指定され、元のデータを復元するために必要な解凍アルゴリズムを識別します
(
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
)
。
ドキュメントレベルの圧縮(ZIPファイルなど)とは異なり、PDF stream圧縮は、ドキュメント構造内の個々のstreamオブジェクトに選択的に適用されます。これにより、コンテンツタイプに基づいて異なる圧縮方式を使用できます。例えば、テキストstreamは画像streamとは異なるアルゴリズムを使用する場合があります。圧縮はエンドユーザーには透過的ですが、PDFを処理するライブラリやアプリケーションでは正確に処理する必要があります。
PDF生成、操作、処理を行う開発者にとって、stream圧縮を理解することは、いくつかの理由から非常に重要です。
パフォーマンスの最適化: 圧縮されたstreamはファイルサイズを大幅に削減し、ネットワーク転送の高速化、ストレージコストの削減、アプリケーションパフォーマンスの向上につながります。圧縮されていないstreamを持つ典型的なPDFは、圧縮された同等のファイルの5〜10倍の大きさになる可能性があります。
メモリ管理: PDFをプログラムで処理する際、開発者はコンテンツにアクセスするためにstreamを解凍し、変更したデータを書き込む際に再圧縮する必要があります。適切な処理により、過度なメモリ消費と処理オーバーヘッドを防ぐことができます。
互換性と標準準拠: PDFのバージョンと標準によって、サポートされる圧縮アルゴリズムが異なります。開発者は、ターゲットとなるPDFビューアとの互換性を維持し、アクセシブルなドキュメントのためのPDF/UAなどの標準に準拠するように、圧縮の選択を行う必要があります ( Citation: N.A., 2014 (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html ) 。
コンテンツのアクセシビリティ: Tagged PDFやアクセシブルなドキュメントの場合、stream圧縮は、支援技術が依存する構造情報を保持する必要があります ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) 。
PDF stream圧縮は、PDF仕様で定義されたフィルタ機構を通じて動作します。このプロセスには、いくつかの重要な技術的概念が含まれます。
圧縮フィルタ: stream辞書の/Filterエントリは、適用する圧縮アルゴリズムを指定します。一般的なフィルタには、/FlateDecode(zlib/deflateアルゴリズムベースで、最も広く使用されている)、/LZWDecode、/RunLengthDecode、および/DCTDecode(画像用のJPEG圧縮)が含まれます。複数のフィルタを配列として連結し、順次適用することができます
(
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
)
。
エンコーディングパラメータ: /DecodeParmsのような追加の辞書エントリは、圧縮アルゴリズム固有のパラメータを提供します。例えば、特定のデータタイプの圧縮率を向上させる予測関数などがあります。
選択的圧縮: 開発者は、コンテンツタイプとサイズに基づいて、個々のstreamを圧縮するかどうかを選択できます。小さなstreamは、フィルタメタデータのオーバーヘッドのために圧縮の恩恵を受けない場合があり、既に圧縮されたデータ(JPEG画像など)は、汎用圧縮アルゴリズムで再圧縮すべきではありません。
処理ワークフロー: 圧縮されたstreamを読み取る際、PDFプロセッサはstream辞書からフィルタを識別し、逆順に解凍アルゴリズムを適用して、アプリケーションに解凍されたデータを提供します。書き込み時には、アプリケーションがデータを圧縮し、stream辞書に適切な/Filterおよび/Lengthエントリを追加して、圧縮されたバイトを書き込みます。
実装上の考慮事項: ほとんどのPDFライブラリは圧縮と解凍を自動的に処理しますが、開発者はPDFをプログラムで作成する際に圧縮設定を意識する必要があります。圧縮レベル(処理時間に影響)とファイルサイズ削減のバランスを取ることは、重要な最適化の判断です。
- PDF streamオブジェクト – コンテンツを保持し、圧縮可能なPDFの基本的なデータコンテナ
- Filter – streamデータに適用される圧縮またはエンコーディングアルゴリズム
- FlateDecode – deflateアルゴリズムをベースとした、現代のPDFで最も一般的な圧縮フィルタ
- Stream辞書 – 圧縮フィルタを含む、streamの属性を記述するメタデータ構造
- Content stream – ページ記述オペレータとグラフィックスコマンドを含む特定のタイプのstream
- (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 Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
- (N.A.) (2014)
- (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html
