COSFilterInputStream
COSFilterInputStreamは、Apache PDFBoxのJavaクラスで、PDFドキュメント内の生のCOS(Carousel Object Structure)オブジェクトへのフィルタリングされた入力ストリームアクセスを提供します。
COSFilterInputStreamは、Apache PDFBoxのJavaクラスで、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ストリームオブジェクトを読み取り、デコードしながら、適切なフィルタ(FlateDecodeやASCII85Decodeなど)を適用して基礎となるデータにアクセスできます。
COSFilterInputStreamは、COSストリームオブジェクトをラップし、ストリームのディクショナリで指定された必要なデコードフィルタを自動的に適用する、特殊化されたJava InputStreamの実装です。標準のJava入力ストリームとは異なり、COSFilterInputStreamは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固有のエンコーディングスキームとフィルタチェーンを理解します。これは、PDFBoxの低レベルCOSオブジェクトモデルと高レベルのコンテンツ処理の橋渡しとして機能し、フィルタパラメータの複雑さや、ストリームが複数のエンコーディング方法を使用する場合の複数フィルタのカスケード処理を扱います。
このクラスは、ドキュメント構造レイヤーではなくCOSレイヤーで動作する点で、他のPDFBoxストリームクラスとは異なります。高レベルのクラスがページやコンテンツストリームなどの意味的なPDF概念を扱うのに対し、COSFilterInputStreamは、PDFファイル構造を構成するプリミティブなオブジェクトタイプ(COSStream、COSDictionary、COSArray)を直接扱います。
PDFコンテンツの抽出、生成、操作を行う開発者にとって、COSFilterInputStreamはPDFストリームに保存された実際のデータにアクセスするために不可欠です。PDFファイルは、ファイルサイズを削減するために圧縮とエンコーディングを広範囲に使用しているため、テキストや画像からフォームデータやメタデータに至るまで、ほぼすべてのコンテンツは使用前に適切なデコードが必要です。このクラスを理解していなければ、開発者は生のPDFデータを効果的に扱ったり、カスタムコンテンツプロセッサを実装したりすることができません。
このクラスは、エンコードされていないストリームデータへのアクセスが必要な、PDFアクセシビリティ、コンテンツ分析、フォーマット変換のためのツールを構築する際に特に重要です。例えば、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 ) からタグ付けされたコンテンツ構造情報を抽出する際には、構造要素ストリームを読み取り、解釈する必要があることが多く、これらはフィルタリングされた入力ストリームを通じて適切にデコードされなければなりません。
COSFilterInputStreamは、COSStreamのディクショナリからFilterエントリを読み取り、どのデコードフィルタを適用するかを決定することで動作します。COSStreamオブジェクトでインスタンス化されると、ストリームのフィルタ仕様(単一のフィルタ名またはフィルタ名の配列)を検査し、適切なデコードストリームのチェーンを作成します。
このクラスは以下の一般的なPDFフィルタを処理します:
- FlateDecode – ZIP/deflate圧縮(最も一般的)
- ASCII85Decode – ASCII base-85エンコーディング
- ASCIIHexDecode – ASCII16進エンコーディング
- LZWDecode – LZW圧縮
- DCTDecode – JPEG圧縮
- CCITTFaxDecode – CCITT Group 3/4 fax圧縮
複数のフィルタが指定されている場合、COSFilterInputStreamはそれらを正しい順序でチェーン化し、あるフィルタの出力を次のフィルタの入力として渡します。また、このクラスはストリームディクショナリからDecodeParms(デコードパラメータ)を処理し、適切な設定でフィルタを構成します。ストリームのread()メソッドを通じてデータが読み取られると、フィルタリングは透過的に行われ、明示的なフィルタ管理を必要とせずにデコードされたデータを呼び出し側に提供します。
- COS(Carousel Object Structure) – PDFファイル形式の基盤を形成する低レベルのオブジェクト構造
- COSStream – PDFストリームを表すCOSオブジェクトで、ディクショナリと関連するバイナリデータを含む
- Filter – PDFドキュメント内のストリームデータに適用されるエンコーディングまたは圧縮方法
- PDStream – ドキュメントモデルレイヤーでPDFストリームを表現する高レベルのPDFBoxクラス
- DecodeParms – ストリームフィルタのパラメータを指定するディクショナリエントリ
- (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
