COSObjectableは、Apache PDFBoxにおける基本的なインターフェースであり、COS(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ドキュメントの内部構造に直接対応する低レベル層です。このインターフェースにより、Javaオブジェクトを辞書、配列、ストリーム、プリミティブ型などの生のPDF表現との間で相互変換することが可能になります。COSObjectableの理解は、PDFBoxでPDFファイルの基盤となるアーキテクチャを扱う開発者にとって不可欠です。
COSObjectableは、Apache PDFBoxにおけるJavaインターフェースであり、高レベルのPDF抽象化と低レベルのCOSオブジェクトとの橋渡しを行います。Carousel Object Structure(COS)は、PDFBoxによる
(
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ドキュメントの基本的な構成要素を表現します。これには辞書(COSDictionary)、配列(COSArray)、ストリーム(COSStream)、文字列(COSString)、数値(COSNumber)、名前(COSName)、ブール値(COSBoolean)が含まれます。
COSObjectKeyは、Apache PDFBoxにおいて、PDFの低レベルなCarousel Object Structure(COS)レイヤー内のオブジェクトを一意に識別するためのクラスです。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文書構造全体にわたって間接オブジェクトを配置および管理するための参照機構として機能します。
COSObjectKeyは、PDFファイル内の間接オブジェクトを一意に識別する2つの整数値、すなわちオブジェクト番号と世代番号をカプセル化します。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
)
では、間接オブジェクトは「n g obj」という形式でこの番号ペアによって参照されます。ここでnはオブジェクト番号、gは世代番号です。COSObjectKeyクラスは、この識別スキームのJava表現を提供し、PDFBoxがPDFオブジェクトを効率的に追跡、取得、管理できるようにします。実際のPDFオブジェクトの内容を表すCOSObjectクラスやCOSBaseクラスとは異なり、COSObjectKeyは純粋な参照識別子であり、ポインタやハッシュマップのキーに類似しています。
COSOutputStreamは、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
)
で定義されているPDFファイル構造の基礎を形成するCOS(Carousel Object Structure)オブジェクトの書き込み操作を提供します。このアウトプットストリームは、ディクショナリ、配列、ストリーム、その他の基本的な構成要素を含むプリミティブなPDFオブジェクトのシリアライゼーションを処理します。生のPDFオブジェクト操作やカスタムPDF生成ワークフローを扱う開発者にとって、重要なコンポーネントとなります。
COSOutputStreamは、Apache PDFBoxの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
)
のオブジェクト構造仕様を直接実装しています。COS(Carousel Object Structure)という名称は、Adobe社がPDF開発時に使用した内部コードネームに由来します。このクラスは、JavaのOutputStream標準クラスを拡張し、PDF固有のデータ型と構造を適切なエンコーディングとフォーマットで書き込むための特殊なメソッドを提供します。
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オブジェクトです。
COSStandardOutputStreamは、Apache PDFBoxにおける低レベルのJavaクラスで、Carousel Object Structure(COS)レイヤーに対する書き込み操作を提供します。このクラスは、辞書、配列、ストリーム、その他の基本構造を含む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
)
で要求される生のバイト形式にシリアル化する処理を担当します。PDFBoxのオブジェクト指向Java APIと実際のバイナリPDFファイル形式を結ぶ重要な橋渡し役として機能します。
COSStandardOutputStreamは、Apache PDFBoxのCOSパッケージ内の出力ストリーム実装で、PDF構文要素を基盤となる出力先に書き込みます。COSレイヤーはPDFBoxにおける最も低い抽象化レベルを表し、
(
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ファイルがどのようにエンコードするかを規定しています。
COSStreamは、Apache PDFBoxにおける基本的なクラスで、Carousel Object Structure(COS)モデル内のストリームオブジェクトを表現します。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ファイル形式仕様をPDFBoxが実装したものです。この低レベルクラスは、PDFストリームオブジェクトへの直接アクセスを提供します。ストリームオブジェクトは、ディクショナリとそれに続く「stream」と「endstream」キーワードで囲まれたバイナリまたはテキストデータで構成されます。COSStreamは、PDFドキュメント内のコンテンツストリーム、画像データ、埋め込みフォント、その他のバイナリリソースを処理するための基盤となります。
COSStreamは、Apache PDFBoxライブラリのJavaクラスで、最も低い抽象化レベルでPDFストリームオブジェクトを表現します。PDPageやPDImageXObjectなど、目的別の便利なAPIを提供する上位レベルのPDFBoxクラスとは異なり、COSStreamは
(
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オブジェクト構造を直接操作します。
COSStringは、Apache PDFBoxにおける基本的なクラスで、PDFドキュメントのCOS(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構造が構築される基本的なオブジェクト型を提供します。COSStringは、生のPDFファイル形式に現れるリテラル文字列と16進数文字列の両方を処理し、テキストデータのエンコーディングとバイトレベルの表現を管理します。
COSStringは、Apache PDFBoxのCOSパッケージに含まれる低レベルのJavaクラスで、PDFドキュメント内の文字列オブジェクトを表現します。構造化されたPDFコンテンツを扱う高レベルのPDFBoxクラスとは異なり、COSStringはプリミティブなオブジェクトレベルで動作し、PDF仕様に記述されている文字列オブジェクトに直接対応します。このクラスはPDF文字列の生のバイト列をカプセル化し、リテラル文字列(括弧で囲まれたもの)と16進数文字列(山括弧で囲まれたもの)の区別を処理します。COSStringは、PDFファイルに現れる正確なバイト表現を保持することで、JavaのネイティブStringクラスとは異なります。これは、非ASCII文字やPDF文字列に埋め込まれる可能性のあるバイナリデータを扱う際に、エンコーディングの整合性を維持するために不可欠です。
PDF操作を行う開発者にとって、COSStringはPDFファイルの低レベルコンテンツにアクセスし、変更するために不可欠です。テキストの抽出、フォームフィールドの処理、メタデータの操作を行う際、開発者は文字エンコーディングや特殊文字の適切な処理を確保するために、COSレベルで文字列データを扱う必要がしばしば生じます。これは、Tagged PDF
(
Citation: PDF Association, 2023
PDF Association(2023). Retrieved from
https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
)
のアクセシビリティ機能を扱う場合に特に重要で、適切な文字列エンコーディングはスクリーンリーダーの互換性やテキスト抽出の精度に影響します。COSStringを理解することで、開発者はエンコーディングの破損、誤ったテキスト抽出、プログラムによるPDFコンテンツの変更時のデータ損失といった一般的な落とし穴を回避できます。
COSUpdateInfoは、Apache PDFBoxにおける低レベルのクラスで、PDF操作中にCOS(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ファイルへの増分更新を保存する際に書き込む必要があるかを追跡する上で重要な役割を果たします。
COSUpdateInfoは、Apache PDFBoxの内部ユーティリティクラスで、更新追跡のためにCOSオブジェクトの状態情報を保持します。実際のPDFオブジェクトのデータ構造を表すCOSBaseクラスとは異なり、COSUpdateInfoはオブジェクトが変更されたかどうか、その世代番号、ドキュメント保存時に相互参照テーブルに含める必要があるかどうかといった補助的な情報を格納します。このクラスは、PDFBoxのオブジェクト管理システムの一部として、特に変更されたオブジェクトのみを出力ファイルに書き込む増分保存操作において、舞台裏で機能します。COSUpdateInfoは通常、アプリケーション開発者が直接インスタンス化するものではなく、PDFBoxのドキュメント保存メカニズムによって自動的に管理されます。
Apache PDFBoxを使用する開発者にとって、COSUpdateInfoの役割を理解することは、パフォーマンス最適化とPDFの増分更新を扱う際に重要です。大規模なPDFドキュメント、特にTagged PDF
(
Citation: PDF Association, 2023
PDF Association(2023). Retrieved from
https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
)
のような複雑な構造を持つドキュメントを変更する場合、増分保存を実行する機能により、ドキュメント全体を書き直すのではなく、変更されたオブジェクトのみを書き込むことで、パフォーマンスを大幅に向上させることができます。COSUpdateInfoは、オブジェクトの状態を追跡することでこの機能を実現します。さらに、PDFの破損問題や予期しないファイルサイズの増大をデバッグする際、COSUpdateInfoがオブジェクトの更新をどのように管理しているかを知ることで、オブジェクトが不必要に変更済みとしてマークされているかどうかを特定できます。この理解は、広範な構造ツリーとメタデータを含むアクセシブルなPDFを扱う際に特に重要になります。
COSWriterは、Apache PDFBoxにおいてCOS(Carousel Object Structure)オブジェクトをPDFファイルに書き込み、シリアル化するための低レベルクラスです。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ドキュメントの内部構造を表す基礎的なオブジェクトモデルです。COSWriterは、メモリ上のCOSオブジェクト(辞書、配列、ストリーム、プリミティブ型など)を、有効なPDFファイル出力に必要な適切にフォーマットされたバイト列に変換するメカニズムを提供します。
COSWriterは、Apache PDFBoxライブラリ内の特化されたシリアル化コンポーネントで、COSオブジェクトをPDFファイル形式の表現に変換します。COSモデル自体は、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
)
で概説されている基本型(真偽値、整数、文字列、名前)、コンテナ型(配列と辞書)、バイナリデータを含むストリームオブジェクトが含まれます。
COSWriterXRefEntryは、Apache PDFBox内部のクラスで、PDF書き込みプロセス中にクロスリファレンス(xref)テーブルの個々のエントリを表現します。クロスリファレンステーブルは、
(
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のCarousel Object Structure(COS)レイヤーの一部です。
COSWriterXRefEntryは、PDFドキュメントのシリアライゼーション中にディスクに書き込まれるPDFオブジェクトのメタデータを追跡するために専用に使用されるJavaクラスです。PDFオブジェクト自体を表現する広範なCOSクラス(COSDictionaryやCOSArrayなど)とは異なり、COSWriterXRefEntryは特にクロスリファレンステーブルの構築に必要なインデックス情報を管理します。クロスリファレンステーブルは、オブジェクト番号をPDFファイル内の物理的なバイト位置にマッピングする重要なデータ構造です。
各COSWriterXRefEntryインスタンスは通常、以下の情報を格納します:
- ファイル内でオブジェクトが開始するバイトオフセット
- オブジェクトの世代番号(バージョニングに使用)
- エントリが使用中または空きオブジェクトを表しているかどうか
- 書き込みプロセスに関連する追加のメタデータ
このクラスは、多くの開発者が通常作業する抽象レベルよりも低いレベルで動作し、パブリックAPIの一部というよりも、PDFBoxのPDF書き込みメカニズムの実装詳細として機能します。
COSWriterXRefEntryの理解は、開発者が以下のような場合に重要になります: