COSParser
COSParserは、Apache PDFBoxにおける低レベルのJavaクラスで、PDF文書構造の基盤となるCarousel Object Structure(COS)を解析し、解釈します。
COSParserは、Apache PDFBoxにおける低レベルのJavaクラスで、PDF文書構造の基盤となるCarousel Object Structure(COS)を解析し、解釈します。これは ( 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コンテンツとメタデータを構成する基本的な構成要素を読み取り、操作することができます。
COSParserは、Apache PDFBoxライブラリのコンポーネントであり、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 ) で定義されている低レベルのオブジェクト構文を読み取り、解釈します。COS(Carousel Object Structure)は、PDFファイルの基盤となるアーキテクチャを表し、8つの基本オブジェクト型で構成されています:ブール値、整数と実数、文字列、名前、配列、辞書、ストリーム、およびnullオブジェクトです。
抽象化された開発者向けインターフェースを提供するPDDocumentやPDPageなどの高レベルのPDFBoxクラスとは異なり、COSParserはPDFファイルの生のバイナリおよびテキスト構造を直接扱います。PDFファイルのコンテンツをトークン化し、オブジェクトの境界を識別し、相互参照を解決し、COSオブジェクトのメモリ内表現を構築します。これにより、COSParserは、カスタムPDF機能の実装、不正な形式の文書のデバッグ、高レベルAPIで公開されていない要素へのアクセスなど、PDF構造に対するきめ細かい制御が必要なシナリオに不可欠となります。
複雑なPDFワークフローを扱う開発者にとって、COSParserは高レベルAPIでは公開されない可能性のある重要な機能を提供します。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 ) などの標準に準拠したアクセシブルなPDFを作成する際、開発者は文書タグやセマンティック情報を定義する構造要素や辞書エントリに直接アクセスする必要がある場合があります。COSParserは、結果として生成されるPDFの正確な構造を制御しながら、この低レベルの操作を可能にします。
このパーサーは、高レベルAPIが失敗したり予期しない結果を生成したりする可能性のある、非標準または破損したPDFファイルを扱う際に特に有用です。開発者は文書構造を検査および修復したり、典型的なパターンに準拠していないPDFからデータを抽出したり、特殊なPDF機能のカスタム処理ロジックを実装したりすることができます。COSParserを理解することで、開発者は抽象化されたインターフェースのみに依存するのではなく、実際のオブジェクト構造を調べることにより、Tagged PDF作成 ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) における問題のトラブルシューティングが可能になります。
COSParserは、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構文規則に従ってトークン化することで動作します。解析プロセスは、ファイルの相互参照テーブル(xrefテーブル)を見つけることから始まります。このテーブルは、オブジェクト番号をファイル内のバイトオフセットにマッピングします。このテーブルを使用することで、パーサーは文書内の任意のオブジェクトを効率的に特定して読み取ることができます。
パーサーは、キーワード(obj、endobj、stream、endstreamなど)、演算子、区切り文字を含むPDFトークンを認識します。間接オブジェクト参照に遭遇すると、その参照をたどって実際のオブジェクトデータを取得できます。パーサーは、開発者がプログラムで検査および変更できるPDFオブジェクトのJava表現であるCOSObjectインスタンスを構築します。
辞書や配列などの複雑なオブジェクトの場合、COSParserはネストされた構造を再帰的に解析し、PDFの内部構造を反映した完全なオブジェクトグラフを構築します。ストリームオブジェクトには特別な処理が施されます:パーサーはまずストリーム辞書を読み取り、次に/Lengthや/Filterエントリなどの情報を使用して、ストリームデータを正しく特定し、必要に応じて解凍します。この低レベルアクセスにより、開発者は、ページ記述、画像データ、フォント情報、Tagged PDFの構造要素を含む生のコンテンツストリームを扱うことができます。
- COS(Carousel Object Structure) – PDFファイルのアーキテクチャ基盤を形成する低レベルのオブジェクトシステム
- PDDocument – 便利なアクセスメソッドを備えた完全なPDF文書を表すApache PDFBoxの高レベルクラス
- COSDictionary – キーと値のペアを含むPDF辞書オブジェクトのJava表現
- COSStream – 辞書とバイナリデータを組み合わせたPDFストリームオブジェクトのJava表現
- 相互参照テーブル(Cross-Reference Table) – 効率的なオブジェクト取得のために、オブジェクト番号をファイル位置にマッピングする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/
- (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
