PDF stream decompression
PDF stream decompressionとは、PDFドキュメント内の圧縮されたデータストリームを復号化し、元のコンテンツにアクセスするプロセスです。
PDF stream decompressionとは、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ドキュメントの実際のコンテンツを読み取り、レンダリング、または操作するためには、decompressionが不可欠です。
PDF stream decompressionとは、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ドキュメントでは、ストリームはバイトシーケンスであり、ストリーム辞書の/Filterエントリで示される1つ以上のフィルタを適用できます。一般的な圧縮フィルタには、/FlateDecode(zlib/deflateアルゴリズムを使用)、/LZWDecode、/DCTDecode(JPEG圧縮)、および/ASCIIHexDecodeがあります。decompressionプロセスは、エンコードされたバイトシーケンスを読み取り、指定されたフィルタの逆処理を適用して、元の非圧縮データを再構築します。
これは、ファイル全体の構造を扱うPDFパースや、decompressionされたデータを処理するコンテンツストリーム解釈とは異なります。stream decompressionは、生のストリームデータをさらなる処理のためにアクセス可能にする復号化ステップに特化しています。
PDFドキュメントを扱う開発者にとって、stream decompressionの理解は非常に重要です。なぜなら、PDF内のほぼすべての意味のあるコンテンツが圧縮されたストリーム内に存在するからです。適切なdecompressionがなければ、以下のことができません:
- PDFドキュメントからテキストや画像を抽出する
- 表示または印刷のためにページをレンダリングする
- テキストレンダリングのためにフォントデータにアクセスする
- メタデータストリームに保存されたメタデータを読み取る
- ( 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 ) で参照されているように、アクセシビリティ目的でページコンテンツを分析または修正する
- PDFリーダー、エディタ、または変換ツールを実装する
さらに、decompressionの不適切な処理は、セキュリティの脆弱性、メモリの問題、または破損した出力につながる可能性があります。開発者は、不正な形式または悪意を持って作成された圧縮ストリームに対して堅牢なエラー処理を実装し、大きなストリームをdecompressionする際のパフォーマンスへの影響を認識する必要があります。
decompressionプロセスは、次の技術的ステップに従います:
ストリームの識別:PDFプロセッサは、ストリーム辞書を解析して
/Filterエントリを識別します。これは、どの圧縮アルゴリズムが適用されたかを指定します。フィルタチェーン処理:複数のフィルタが(配列として)指定されている場合、逆順に適用する必要があります。たとえば、ストリームが最初にASCIIエンコードされ、次に圧縮された場合、最初にdecompressionし、次にASCIIデコードする必要があります。
アルゴリズムの適用:フィルタタイプに基づいて、適切なdecompressionアルゴリズムが適用されます:
/FlateDecode:zlib/deflate decompressionをオプションの予測関数と共に使用/LZWDecode:LZW(Lempel-Ziv-Welch)decompressionを適用/DCTDecode:JPEG圧縮された画像データをデコード/RunLengthDecode:ランレングスエンコードされたデータを展開
パラメータ処理:
/DecodeParms辞書が存在する場合、予測アルゴリズムやカラーコンポーネントの数など、decompressionに必要な追加パラメータを提供します。出力の検証:decompressionされたデータ長は、コンテンツタイプおよび指定されたパラメータに基づいた期待値と一致する必要があります。
( 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 stream – バイトシーケンスを含むPDFオブジェクトタイプで、通常は圧縮されており、コンテンツデータを表します
- Content stream – ページコンテンツを記述するグラフィックス演算子とオペランドを含む特定のタイプのPDFストリーム
- Filter – ストリームデータに適用される処理操作で、最も一般的には圧縮またはエンコードに使用されます
- FlateDecode – PDFファイルで最も一般的な圧縮フィルタで、zlib/deflateアルゴリズムに基づいています
- Stream dictionary – フィルタやパラメータなど、ストリームに関するメタデータを定義する辞書オブジェクト
- (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
- (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
