GraphicsOperatorProcessor
GraphicsOperatorProcessorは、Apache PDFBoxの抽象クラスであり、開発者がPDFコンテンツストリーム内のグラフィックスオペレータを処理および操作できるようにします。
GraphicsOperatorProcessorは、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ファイルを扱う際、コンテンツストリームには、テキスト、グラフィックス、画像がページ上でどのようにレンダリングされるかを定義するオペレータのシーケンスが含まれています。このクラスは、これらのオペレータをプログラム的にインターセプトして処理するためのフレームワークを提供します。
GraphicsOperatorProcessorは、Apache PDFBoxのコンテンツストリーム処理アーキテクチャの基礎コンポーネントです。開発者がこのクラスを拡張することで、PDFコンテンツストリーム内の低レベルな描画コマンドを読み取り、解釈し、場合によっては変更できるカスタムプロセッサを作成できます。完全なページオブジェクトやドキュメント構造を扱う高レベルなPDFBox APIとは異なり、GraphicsOperatorProcessorは個々の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 ) で定義されているグラフィックス状態、パス構築、テキスト配置、レンダリング操作を制御する基本命令です。
このクラスは、(しばしば連携して動作する)PDFStreamEngineとは異なり、全体的なレンダリングパイプラインの管理ではなく、グラフィックスオペレータの処理に特化しています。PDFStreamEngineがコンテンツストリームの実行を調整する一方で、GraphicsOperatorProcessorの実装は、特定のオペレータに遭遇したときに何が起こるかを定義します。
PDF処理を行う開発者にとって、GraphicsOperatorProcessorは、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 ) に基づくPDF/UAコンプライアンスの検証、カスタムレンダリングエンジンの実装、PDFコンテンツのプログラム的な変換などがあります。このレベルのアクセスがなければ、開発者はPDFコンテンツの表示方法を決定する基本操作を効果的に検査または変更することができません。
GraphicsOperatorProcessorは、PDFオペレータのさまざまなカテゴリに対応するコールバックメソッドを定義することで機能します。PDFBoxのコンテンツストリームパーサーがPDFのコンテンツストリーム内でオペレータに遭遇すると、登録されたGraphicsOperatorProcessorインスタンスの適切なメソッドを呼び出します。開発者はサブクラスを作成し、関心のあるオペレータを処理するために特定のメソッドをオーバーライドします。例えば、テキスト表示オペレータ(Tj、TJ)、パス構築オペレータ(m、l、c)、グラフィックス状態オペレータ(q、Q、cm)などです。
処理フローは通常、次のように進みます:(1)PDFStreamEngineまたは類似のコンポーネントがコンテンツストリームを読み取る、(2)各オペレータとそのオペランドが解析される、(3)GraphicsOperatorProcessor上の対応するメソッドがオペレータのパラメータとともに呼び出される、(4)カスタム実装がロジックを実行する。これには情報の収集、グラフィックス状態の変更、または副作用のトリガーが含まれる場合があります。このクラスは現在のグラフィックス状態へのアクセスを維持し、実装が各オペレータを処理する際に、現在の変換マトリックス、カラースペース、テキスト状態などのコンテキストを理解できるようにします。
主要な概念には、 ( 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やPDResourcesなどの他のPDFBoxコンポーネントとの連携が含まれます。
- Content Stream(コンテンツストリーム) – ページコンテンツを定義するPDFオペレータとオペランドのシーケンス
- PDFStreamEngine – PDFコンテンツストリームの実行と処理を調整するPDFBoxクラス
- Graphics State(グラフィックス状態) – PDFにおけるレンダリング操作を制御するパラメータの集合
- PDF Operator(PDFオペレータ) – PDFコンテンツストリーム内の特定のグラフィックスまたはテキスト操作を実行する基本コマンド
- PDFRenderer – PDFページをラスター画像に変換するPDFBoxコンポーネント
- (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
