COSObject
COSObjectは、Apache PDFBoxにおける低レベルのJavaクラスで、で定義されているCarousel Object Structure(COS)モデルに基づくPDF文書構造の基本的な構成要素を表します。
COSObjectは、Apache PDFBoxにおける低レベルのJavaクラスで、 ( 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 ) で定義されているCarousel Object Structure(COS)モデルに基づくPDF文書構造の基本的な構成要素を表します。辞書、配列、ストリーム、プリミティブ値などの生のPDFオブジェクトにアクセスし、操作するための基盤として機能します。PDFBoxを使用する開発者は、高レベルAPIでは特定の文書操作タスクに対応できない場合に、COSObjectとそのサブクラスを使用してPDFの基礎となるデータ構造と直接やり取りします。
COSObjectは、 ( 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文書の低レベルオブジェクト指向構造を表すCOS(Carousel Object Structure)アーキテクチャのApache PDFBox実装の一部です。COSObjectクラス階層には、各PDFオブジェクトタイプに対応する特定のサブクラスが含まれます:辞書オブジェクト用のCOSDictionary、配列オブジェクト用のCOSArray、ストリームオブジェクト用のCOSStream、名前オブジェクト用のCOSName、およびCOSInteger、COSFloat、COSStringなどのプリミティブ型用の各種クラスです。
PDFBoxの高レベル文書モデルクラス(PDDocumentやPDPageなど)とは異なり、COSObjectクラスは追加の抽象化や便利メソッドを介さずに生のPDF構文への直接アクセスを提供します。この違いは重要です:高レベルクラスは一般的な文書操作用に設計され、開発者にとって使いやすいAPIを提供するのに対し、COSObjectクラスは実際のPDF構造を公開し、PDF仕様の詳細な理解を必要とします。
COSObjectの理解は、標準的な文書操作を超えた高度な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を作成する場合や、 ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) で説明されている複雑なTagged PDF構造を実装する場合、開発者は高レベルAPIでは完全に公開されていない可能性のあるPDF辞書やオブジェクトプロパティへの直接アクセスを必要とすることがよくあります。
COSObjectクラスは、PDFの問題をデバッグする場合、カスタムPDF機能を実装する場合、または非標準のPDF拡張を扱う場合に特に重要になります。構造ツリー要素の変更やタグ付きコンテンツ用の特定の辞書エントリの設定など、アクセシビリティ関連の多くのタスクでは、適切な文書構造を確保するためにCOSObjectインスタンスの操作が必要です。
COSObject階層は、PDF仕様で定義されているオブジェクトタイプを反映しています。PDFBoxがPDFファイルを解析すると、文書の内部構造を表すCOSObjectインスタンスのツリーが作成されます。開発者は、getCOSObject()やgetCOSDictionary()などのメソッドを使用して、高レベルのPDFBoxオブジェクトからCOSObjectインスタンスを取得できます。
COSObjectを扱う際は、通常、型チェックと適切なサブクラスへのキャストが必要です。例えば、ページの辞書エントリにアクセスするには、PDPageオブジェクトからCOSDictionaryを取得し、getDictionaryObject()、setItem()、getInt()などのメソッドを使用して値を読み取り、変更します。COSStreamオブジェクトは辞書プロパティとバイナリデータストリームを組み合わせており、コンテンツストリーム、画像、フォントの処理に不可欠です。
COSObjectモデルは、COSObjectKeyを使用してオブジェクト参照と間接オブジェクトを維持し、PDFのクロスリファレンスシステムを適切に処理します。これにより、共有オブジェクト(フォントや構造要素など)への変更が文書構造全体に正しく反映されることが保証されます。
- COSDictionary – キーと値のペアを格納するPDF辞書オブジェクトを表すCOSObjectサブクラス
- PDDocument – 完全なPDF文書を表すApache PDFBoxの高レベルクラス
- Structure Tree – COS辞書を使用するTagged PDFにおけるコンテンツ要素の階層的な構成
- Content Stream – グラフィックスとテキストオペレータを含むPDFストリームオブジェクトで、COSStreamを通じてアクセスされる
- Indirect Object – 文書構造内の複数の場所から参照できる番号付き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
