PDStream
PDStreamは、Apache PDFBox PDModel APIの高レベルクラスで、Javaデベロッパーにオブジェクト指向のインターフェースを提供し、PDFストリームオブジェクトの読み取りと操作を可能にします。
PDStreamは、Apache PDFBox PDModel APIの高レベルクラスで、Javaデベロッパーにオブジェクト指向のインターフェースを提供し、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 ) の基本的なコンポーネントであり、ページコンテンツ、画像、フォント、メタデータなど、さまざまな種類のデータを格納します。PDStreamは、生のPDFストリーム構文を扱う複雑さを抽象化し、デベロッパーがより直感的なプログラムインターフェースを通じて、ページ、リソース、注釈、フォームなどのPDF構造を操作できるようにします。
PDStreamは、Apache PDFBoxの高レベルPDModel APIレイヤーの一部で、PDFストリームオブジェクトをJavaオブジェクトとして表現するように設計されています。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とendstreamキーワードで囲まれたバイナリまたはテキストデータで構成されます。PDStreamはこの構造をカプセル化し、ストリームのディクショナリ(メタデータ)とそのデータコンテンツの両方にアクセスするメソッドを提供します。PDF構文の手動解析が必要な低レベルAPIとは異なり、PDStreamはエンコーディング、フィルタリング、圧縮、解凍を自動的に処理します。これは、PDFBoxの低レベルCOS APIにおけるContent Object StreamクラスであるCOSStreamとは異なり、生の構文アクセスではなくドキュメントモデルのセマンティクスを提供するため、構文レベルではなく構造レベルでPDFコンテンツを扱う必要があるアプリケーションデベロッパーにとって望ましい選択肢となっています。
プログラムでPDFを扱うデベロッパーにとって、PDStreamは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 ) などの標準に準拠したアクセシブルなPDFを作成する際、デベロッパーは構造要素の追加、読み上げ順序の変更、メタデータの埋め込みのために、コンテンツストリームを操作する必要がよくあります。PDStreamはストリームのエンコーディング、フィルタリング(FlateDecodeによる圧縮など)、ディクショナリ管理の技術的な詳細を処理するため、デベロッパーは低レベルのPDF構文ではなくアプリケーションロジックに集中できます。この抽象化は、Tagged PDF構造 ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を扱う際に特に有用です。Tagged PDFでは、ドキュメントのアクセシビリティと意味的な正確性を確保するために、コンテンツストリームが構造要素と適切に関連付けられている必要があります。
PDStreamは、低レベルのCOSStreamクラスのラッパーとして機能し、関連するストリームディクショナリエントリを管理しながら、ストリームデータの読み取りと書き込みを行うメソッドを提供します。ストリームを読み取る際、PDStreamはストリームディクショナリの/Filterエントリに基づいて自動的に解凍を処理し、デコードされたデータをアプリケーションに返します。書き込む際には、適切なフィルターを適用し、それに応じてディクショナリエントリを更新できます。このクラスは、データを読み取るための入力ストリームにアクセスするgetStream()、新しいコンテンツを書き込むためのcreateOutputStream()、および長さ、フィルター、デコードパラメータなどのメタデータを取得するためのディクショナリアクセサメソッドなどのメソッドを提供します。PDStreamインスタンスは通常、他のPDModelオブジェクトを通じて取得されます。たとえば、PDPageでgetContents()を呼び出すと、ページのコンテンツストリームを表すPDStreamが返されます。このより広範なPDModel APIとの統合により、デベロッパーは生のバイトオフセットやオブジェクト参照ではなく、
(
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ドキュメント構造を自然にナビゲートできます。
- PDPage – PDFドキュメント内の単一ページを表し、ページコンテンツのPDStreamオブジェクトを含むことが多い
- COSStream – PDStreamがラップする低レベルのContent Object Streamクラスで、PDFストリームへの直接的な構文アクセスを提供する
- PDResources – PDFページのコンテンツストリームで参照されるリソース(フォント、画像、パターン)を管理する
- Content Stream – ページのグラフィカルコンテンツを記述するオペレーターとオペランドのシーケンス
- Stream Dictionary – フィルターやデコードパラメータを含む、ストリームに関するメタデータを含む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
