PDF stream API
PDF stream APIとは、PDF文書内のstreamオブジェクトの読み取り、書き込み、および操作を可能にするプログラミングインターフェースを指します。
PDF stream APIとは、PDF文書内のstreamオブジェクトの読み取り、書き込み、および操作を可能にするプログラミングインターフェースを指します。streamオブジェクトは、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は、PDFコンテンツをプログラムで作成、変更、抽出するために必要な低レベルアクセスを提供します。
PDF stream APIは、開発者がPDF streamオブジェクトとデータ構造レベルで相互作用できるプログラミングメソッドと関数の集合です。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 ) において、streamは辞書オブジェクトとそれに続く「stream」と「endstream」キーワード間の0個以上のバイトで構成されるオブジェクトです。直接的なオブジェクト操作とは異なり、stream APIはstreamが通常採用する圧縮、フィルタリング、エンコーディングの複雑さを処理します。
stream APIは、抽象的な文書要素ではなく、生のバイトシーケンスまたはフィルタ処理されたバイトシーケンスを直接扱うという点で、高レベルのPDF APIとは異なります。高レベルAPIが「addImage()」のようなメソッドを提供する一方で、stream APIは開発者に、PDF構造内の画像オブジェクトを構成する実際のstream辞書エントリ、フィルタパラメータ、バイトデータを制御する権限を与えます。
PDF処理アプリケーションを構築する開発者にとって、標準的な高レベル操作では不十分な場合、stream APIは不可欠です。カスタムコンテンツ生成、最適化のためのページコンテンツstreamの直接操作、埋め込みリソースの抽出、カスタム圧縮スキームやバイトレベルでの透かし挿入などの高度な機能の実装を可能にします。
stream APIは、アクセシブルなPDFを扱う際に特に重要です。開発者がコンテンツstreamを適切に構造化し、Tagged PDF ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) が文書の論理構造内で正しくエンコードされることを保証できるためです。このレベルの制御は、アクセシビリティ標準 ( 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 ) への準拠や、高レベルAPIでは対処できない複雑なPDF生成問題のトラブルシューティングに必要です。
PDF stream APIは通常、stream辞書(長さ、フィルタ、デコードパラメータなどのメタデータを含む)とstreamデータ(実際のバイトコンテンツ)にアクセスするメソッドを提供します。streamを読み取る際、APIはstream辞書で指定された任意のフィルタ(圧縮用のFlateDecode、JPEG画像用のDCTDecodeなど)を処理し、 ( 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 ) で指定されているようにデータをデコードする必要があります。
streamを書き込む際、開発者はAPIを使用して辞書エントリを設定し、圧縮またはエンコーディング用のフィルタを指定し、生のバイトデータを書き込みます。APIは、stream長の計算、指定されたフィルタの正しい順序での適用、stream区切り文字による適切なフォーマットの保証などのタスクを処理します。主な操作には以下が含まれます:
- 自動フィルタデコーディングによる既存streamの開示と読み取り
- 指定された辞書パラメータを持つ新しいstreamオブジェクトの作成
- FlateやLZWエンコーディングなどの圧縮フィルタの適用
- streamデータを変更せずにstream辞書を変更
- streamオブジェクトへの生またはプリフィルタされたバイトシーケンスの書き込み
ほとんどのstream APIは、画像の抽出、コンテンツstreamのテキストおよびグラフィックスオペレータへの解析、辞書メタデータを保持したままのstreamデータ置換などの一般的な操作のための便利なメソッドも提供します。
- Content stream(コンテンツstream) – ページコンテンツを記述するオペレータとオペランドのシーケンスを含む特定のタイプのPDF stream
- Filter(フィルタ) – streamデータに適用されるエンコーディングまたは圧縮アルゴリズムで、stream辞書で指定される
- Stream dictionary(stream辞書) – streamデータの前に配置され、streamに関するメタデータを含む辞書オブジェクト
- Indirect object(間接オブジェクト) – 複数の場所から参照できる番号付きPDFオブジェクトで、streamによく使用される
- PDF object model(PDFオブジェクトモデル) – PDF文書を構成するオブジェクト(辞書、配列、streamなど)の階層構造
- (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
