COSInputStream
COSInputStreamは、Apache PDFBoxにおける低レベルのJavaクラスで、Carousel Object Structure(COS)モデルで定義されたPDFオブジェクトの基礎となるバイトストリームへの直接アクセスを提供します。
COSInputStreamは、Apache PDFBoxにおける低レベルのJavaクラスで、Carousel Object Structure(COS)モデルで定義されたPDFオブジェクトの基礎となるバイトストリームへの直接アクセスを提供します。このクラスにより、開発者は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 ) における基本的なデータ構造です。COSInputStreamは、抽象的なCOSオブジェクトモデルとPDFファイル内に保存された実際のバイナリコンテンツとの橋渡しを行います。
COSInputStreamは、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 ) で定義されたオブジェクトモデルを反映した、PDFBoxのPDF文書構造の内部表現です。PDFBoxは一般的なPDF操作のための高レベルAPIを提供していますが、COSInputStreamは基盤層で動作し、フィルタリングおよびデコード操作の前後におけるストリームコンテンツへの直接アクセスを開発者に提供します。
標準的なJavaのInputStreamクラスとは異なり、COSInputStreamはPDFBoxのCOS層と緊密に統合されており、ストリーム辞書、フィルタ、デコードパラメータなどのPDF固有の概念を理解しています。COSInputStreamは、コンテンツの意味的解釈ではなく、生データアクセスのみに焦点を当てることで、PDStreamなどの高レベルPDFBoxクラスとは異なります。これにより、COSInputStreamはストリームデータの読み取りと処理方法を正確に制御する必要があるタスクに不可欠となっています。
PDFドキュメントを低レベルで扱う開発者にとって、COSInputStreamはカスタム処理、デバッグ、最適化タスクに必要な細かい制御を提供します。このクラスを理解することは、カスタムフィルタの実装、埋め込みリソースの抽出、または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 ) で定義されているストリームオブジェクトに依存しているため、これらのストリームに直接アクセスできることで、高レベルAPIが公開する範囲を超えた高度な操作が可能になります。
これは、 ( 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プロセッサ、アナライザ、またはコンバータを実装する開発者は、文書の実際のコンテンツを構成する生データにアクセスするためにCOSInputStreamを必要とすることがよくあります。
COSInputStreamは、COSストリームオブジェクトの基礎となるデータソースをラップし、バイトを読み取るための標準的なJava InputStreamメソッドを提供することで動作します。PDFストリームオブジェクトがPDFBoxのCOSモデルを通じてアクセスされると、COSInputStreamは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 ) で定義されているストリームデータ構造を表すCOSStreamオブジェクトと連携して動作します。COSStreamには、辞書(フィルタ情報やデコードパラメータを含むストリームに関するメタデータ)と実際のストリームデータの両方が含まれます。COSInputStreamは、このストリームデータへのアクセスを提供します。データは、生のエンコードされた形式か、ストリームの取得に使用されるメソッドに応じてフィルタが適用された後の形式のいずれかになります。
主な技術的側面は以下の通りです:
- ストリーム位置管理:COSInputStreamはストリーム内の位置を追跡し、順次読み取り操作を可能にします
- フィルタ認識:COSInputStream自体は生のバイトを読み取りますが、圧縮とエンコーディングを処理するPDFBoxのフィルタリングシステムと連携するように設計されています
- リソース管理:適切なライフサイクル管理が重要です。ファイルハンドルとメモリを解放するため、使用後はストリームを閉じる必要があります
- RandomAccessReadとの統合:PDFBoxは基礎となるファイルアクセスメカニズムとしてRandomAccessReadを使用し、COSInputStreamはこの層と連携して効率的なデータ取得を行います
開発者は通常、COSStreamオブジェクトまたは他のCOS層クラスのメソッドを呼び出してCOSInputStreamインスタンスを取得し、その後、標準的なInputStreamの読み取り操作を使用して、データをバイト単位またはチャンク単位で処理します。
- COSStream – PDFストリームを表すCOSオブジェクトで、辞書メタデータとCOSInputStreamを介してアクセス可能なストリームデータの両方を含みます
- COSBase – PDFBoxにおけるすべてのCOSオブジェクト(ストリーム、辞書、配列、プリミティブ型を含む)の抽象基底クラス
- PDStream – COSStreamをラップし、一般的なストリーム操作のためのより便利なメソッドを提供する高レベルPDFBoxクラス
- Carousel Object Structure(COS) – PDF仕様で定義されているPDF文書構造を表現するためにApache PDFBoxが使用する内部オブジェクトモデル
- ストリームフィルタ – PDFストリームに適用されるエンコーディングおよび圧縮メカニズム(FlateDecodeやDCTDecodeなど)で、COSInputStreamからのデータ読み取り方法に影響します
- (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
