PDFObjectStreamParser
PDFObjectStreamParserは、Apache PDFBoxのPDModel API内の特殊なクラスで、PDF文書内のオブジェクトストリームの解析を担当します。
PDFObjectStreamParserは、Apache PDFBoxのPDModel API内の特殊なクラスで、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 1.5で導入された機能で、複数の間接オブジェクトを圧縮形式で格納するための空間効率の高い仕組みです。このパーサーにより、開発者は最新のPDFファイルを扱う際に、これらの圧縮されたオブジェクトを抽出・操作できるようになります。
PDFObjectStreamParserは、Apache PDFBox内の低レベル解析コンポーネントで、オブジェクトストリーム(/Type /ObjStm指定を持つストリームオブジェクト)の読み取りと解釈を専門的に処理します。PDF構造への高レベルアクセスを提供するPDDocumentクラスとは異なり、PDFObjectStreamParserは、 ( 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 ) で規定されているようにオブジェクトストリーム内に格納された個別オブジェクトの展開と抽出という技術的なタスクに焦点を当てています。このパーサーは、オブジェクトストリームの2部構成を処理します。第1セクションにはオブジェクト番号とバイトオフセットのペアが含まれ、第2セクションには圧縮ストリーム内の実際のオブジェクトデータが含まれます。
このパーサーは、標準的なPDFオブジェクトパーサーとは異なります。なぜなら、オブジェクトストリームの特有のフォーマット要件を処理する必要があるためです。オブジェクトストリームでは、複数のオブジェクトが連結され、PDFファイル内の従来のバイト位置ではなく、内部オフセットによって参照されます。また、個別のオブジェクトを解析する前に、通常はFlate圧縮を使用したストリームデータの展開も管理します。
最新のPDFファイルを扱う開発者にとって、PDFObjectStreamParserを理解することは、いくつかの理由で重要です。第一に、オブジェクトストリームは複数のオブジェクトを一緒に圧縮することでファイルサイズを大幅に削減するため、現代のソフトウェアで生成されるPDF文書で広く使用されています。PDF解析の問題をデバッグしたり、カスタム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文書のアクセシビリティ機能を扱う際、開発者はオブジェクトストリーム内に格納された構造化コンテンツに遭遇することがあります。これらのストリームを適切に解析することで、アクセシビリティ情報、フォームデータ、注釈オブジェクトがPDF操作作業中に正しく抽出され、保持されることが保証されます。
第三に、PDF処理アプリケーションのパフォーマンス最適化は、オブジェクトストリームの効率的な処理に依存することが多くあります。オブジェクトストリームには数百のオブジェクトが含まれる可能性があり、ストリーム全体を不必要に展開することなく選択的にアクセスする必要があります。
PDFObjectStreamParserは、複数段階のプロセスを通じて動作します。呼び出されると、まずオブジェクトストリーム辞書にアクセスして、/Nエントリ(圧縮されたオブジェクトの数)や/Firstエントリ(最初の圧縮オブジェクトのバイトオフセット)などの重要なパラメータを取得します。次に、パーサーは通常Flateデコードフィルタを使用してストリームデータを展開します。
展開後、パーサーはインデックスセクションを読み取ります。このセクションには、オブジェクト番号とストリーム内の相対バイトオフセットを表すN個の整数ペアが含まれています。このインデックスにより、パーサーはストリーム全体を解析することなく特定のオブジェクトを特定できます。その後、パーサーは実際のオブジェクトデータを処理し、インデックスからのオフセットを使用して個別のオブジェクトを抽出し、PDFBoxの上位レベルAPIで操作できる標準的な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構文規則に従って正しく解釈されることを保証します。同じストリーム内の他のオブジェクトを参照するオブジェクトなどのエッジケースを処理し、最適なパフォーマンスのためにPDFBoxのオブジェクトキャッシュメカニズムとの適切な統合を保証します。
- PDFParser – PDF文書全体を解析し、さまざまな特殊パーサーを調整するApache PDFBoxのメインクラス
- COSStream – PDF構造の基礎となるCarousel Object System(COS)モデルにおける圧縮ストリームオブジェクトを表すPDFBoxクラス
- PDDocument – PDF文書の読み取り、作成、変更のための主要APIを提供する高レベルのApache PDFBoxクラス
- Object Stream – 空間効率のために複数の間接オブジェクトを単一の圧縮ストリームに格納できるPDF機能
- Cross-Reference Stream – 相互参照情報を圧縮ストリームに格納する代替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
- (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
