PDF object decompression
PDFオブジェクト展開(decompression)は、PDFオブジェクト内の圧縮されたデータストリームを抽出し、デコードして元の読み取り可能なコンテンツにアクセスするプロセスです。
PDFオブジェクト展開(decompression)は、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ストリームオブジェクトに適用された圧縮フィルタを逆転させ、エンコードされたバイトシーケンスを元の形式に戻すことを指します。
(
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エントリを通じて適用されたフィルタを指定するディクショナリが含まれています。一般的な圧縮フィルタには、/FlateDecode(zlib/deflateアルゴリズムに基づく)、/LZWDecode、/DCTDecode(JPEG圧縮)、/CCITTFaxDecodeなどがあります。展開は、データエンコーディングではなくセキュリティ制限に対応する復号化(decryption)や、単なる圧縮の逆転以外に文字エンコーディング変換を含む可能性のあるより広義な用語であるデコーディング(decoding)とは異なります。
PDF処理アプリケーションを構築する開発者にとって、オブジェクト展開は意味のあるコンテンツにアクセスするための基本的な要件です。適切な展開がなければ、コンテンツストリームは理解不能なバイトシーケンスのままであり、テキスト抽出、画像取得、アクセシビリティ機能、コンテンツ分析ができません。Tagged PDFドキュメント ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を扱う際には、アクセシビリティ機能を可能にする構造要素や読み上げ順序情報にアクセスするために展開が重要になります。パフォーマンスの考慮事項も重要です。効率的な展開アルゴリズムは、大きなドキュメントを処理する場合や複数のPDFを同時に処理する場合のアプリケーション速度に直接影響します。開発者は、複数の圧縮方法が順次適用されるカスケードフィルタなどのエッジケースも処理する必要があります。
展開プロセスは、ストリームオブジェクトのディクショナリを読み取り、使用された圧縮アルゴリズムを指定する/Filterエントリを識別することから始まります。複数のフィルタが配列としてリストされている場合、展開時には逆順で適用する必要があります。開発者のコードは圧縮されたバイトストリームを取得し、適切な展開アルゴリズムを通して処理し、生データを出力します。/FlateDecodeの場合、これにはzlib互換の展開ライブラリを実装または使用することが含まれます。/DecodeParmsディクショナリエントリが存在する場合、特定のデータタイプに対して圧縮を最適化するプリディクタ関数など、特定のフィルタに固有の追加パラメータを提供します。破損した圧縮ストリームが展開の失敗を引き起こす可能性があるため、エラー処理は重要です。
(
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 object(PDFストリームオブジェクト) – 圧縮可能で、アクセスに展開が必要なバイトシーケンスを含むPDFオブジェクトタイプ
- Content stream(コンテンツストリーム) – 視覚的コンテンツを定義するページマーキング演算子とオペランドを含む特定のタイプのストリーム
- Filter pipeline(フィルタパイプライン) – ストリームデータを変換するために適用されるエンコーディング/デコーディング操作のシーケンス
- FlateDecode – PDFファイルで最も一般的な圧縮フィルタで、deflateアルゴリズムを使用
- PDF object parsing(PDFオブジェクト解析) – 圧縮されたオブジェクトを含むPDFファイル構造を読み取り、解釈するより広範なプロセス
- (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/
