PDFGraphicsStreamEngine
PDFGraphicsStreamEngineは、Apache PDFBoxにおける基本的な抽象クラスであり、PDFコンテンツストリームを処理するためのフレームワークを提供します。
PDFGraphicsStreamEngineは、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 ) で規定されているように、PDFページ上でグラフィック要素、テキスト、画像がどのようにレンダリングされるかを定義するPDFコンテンツストリーム内のオペランドとオペレーターを解析し、解釈します。PDFコンテンツのレンダリングとPDF文書からの構造化された情報の抽出の両方において、このクラスは基盤として機能します。
PDFGraphicsStreamEngineは、Apache PDFBoxライブラリの抽象基底クラスであり、PDFコンテンツストリームに含まれる低レベルの描画コマンドを解釈します。文書構造を扱う高レベルのPDFBoxクラス(PDDocumentやPDPageなど)とは異なり、PDFGraphicsStreamEngineはコンテンツストリームレベルで動作し、グラフィック状態、パス、テキスト位置、リソース参照を定義するオペレーターのシーケンスを解析します。
このクラスは、各PDFオペレーター(テキスト表示のTj、パス移動のm、ストローク描画のSなど)が対応するメソッドを呼び出すコマンドパターンを実装しています。開発者はこのクラスを継承し、関心のある操作を傍受して処理するために特定のメソッドをオーバーライドします。これは単にPDFオブジェクトを読み取るのとは異なり、PDFビューアによって実行される描画命令の解釈されたビューを提供します。
PDFGraphicsStreamEngineは、グラフィック状態スタックを維持し、コンテンツストリームの処理中に変換、色、線のプロパティ、その他のレンダリングパラメーターを追跡することで、PDF仕様規則に従って操作が正しいコンテキストで解釈されることを保証します。
PDFコンテンツの抽出、解析、操作を行う開発者にとって、PDFGraphicsStreamEngineは、PDFでコンテンツが実際にどのように描画されるかへの重要な低レベルアクセスを提供します。これが重要なのは、PDF文書が単純な階層構造でコンテンツを保存しているのではなく、順次解釈する必要がある描画コマンドのストリームを含んでいるためです。
このクラスは、アクセシビリティ機能やTagged PDFコンテンツ ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を扱う際に特に重要です。コンテンツストリームと文書構造の関係を理解するには、実際のレンダリング操作を解析する必要があるためです。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の代替フォーマットへのレンダリングなど、特殊なタスクのためのカスタム実装を可能にします。この抽象化レイヤーがなければ、開発者は生のPDF構文を手動で解析して解釈し、グラフィック状態管理のすべての複雑さを自分で処理する必要があります。
PDFGraphicsStreamEngineは、PDFコンテンツストリームを順次処理する状態機械として動作します。コンテンツストリームがエンジンに渡されると、ストリームをオペレーターとそのオペランドにトークン化し、各オペレーターを適切なハンドラーメソッドにディスパッチします。
このクラスは、処理中にいくつかの重要な状態を維持します:
グラフィック状態スタック:現在の変換マトリックス(CTM)、色空間、線幅、クリッピングパス、その他のレンダリングパラメーターを追跡します。qとQオペレーターがこの状態を保存およびプッシュすることで、ネストしたグラフィックコンテキストを可能にします。
リソース辞書:/F1や/Im1などの名前を通じてコンテンツストリームから参照されるフォント、画像、色空間、その他のリソースへのアクセスを管理します。
テキスト状態:フォント、フォントサイズ、文字間隔、単語間隔、テキストマトリックス、テキスト行マトリックスを含むテキスト固有のパラメーターを維持します。
PDFGraphicsStreamEngineを使用するには、開発者はサブクラスを作成し、処理したいPDFオペレーターに対応するメソッドをオーバーライドします。例えば、showGlyph()をオーバーライドすると描画される各文字を傍受でき、appendRectangle()は矩形パス操作をキャプチャします。エンジンは、PDF構文の解析、座標変換、状態管理の複雑さを自動的に処理します。
処理フローは通常、PDPageまたはコンテンツストリームを用いてprocessPage()またはprocessStream()を呼び出すことで開始され、すべての操作の順次解釈がトリガーされ、現在のグラフィック状態のコンテキストで適切なコールバックメソッドが呼び出されます。
- Content Stream – ページコンテンツのレンダリング命令を定義するPDFオペレーターとオペランドのシーケンス
- Graphics State – グラフィックとテキストのオペレーターがコンテンツをレンダリングする方法を制御するパラメーターの集合
- PDDocument – PDF文書全体を表すApache PDFBoxの最上位クラス
- PDPage – PDF文書内の単一ページを表すApache PDFBoxクラス
- PDF Operator – コンテンツストリーム内で実行するグラフィックまたはテキスト操作を指定するキーワード
- (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
