BeginText
BeginTextは、Apache PDFBoxにおいて、PDFコンテンツストリーム内のテキストオブジェクトの開始を示すオペレータークラスです。
BeginTextは、Apache PDFBoxにおいて、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 ) では、テキストオブジェクトはBT(Begin Text)オペレーターとET(End Text)オペレーターによって区切られ、ページ上でテキストを配置およびレンダリングするための構造化されたコンテキストを作成します。PDFBoxのBeginTextクラスは、この基本的なオペレーターを表現し、PDFテキストコンテンツの作成と解析の両方において不可欠です。
BeginTextは、PDF仕様で定義されているBT(Begin Text)オペレーターを表現する、Apache PDFBoxの具象実装クラスです。PDFコンテンツストリームを処理する際、このオペレーターは新しいテキストオブジェクトを初期化し、一時的なテキスト座標系を確立し、テキストマトリックスとテキスト行マトリックスを単位行列にリセットします。図形や画像に影響を与える一般的なグラフィックスオペレーターとは異なり、BeginTextはテキストレンダリング操作のための独立したコンテキストを作成します。テキスト表示オペレーター、フォント選択、テキスト配置コマンドはすべて、BTオペレーターとETオペレーターで区切られたテキストオブジェクト内で実行される必要があります。PDFBoxのアーキテクチャでは、BeginTextはOperatorProcessorクラスを継承し、EndTextオペレーターと連携してテキストコンテンツのスコープを定義します。
PDF生成やテキスト抽出を行う開発者にとって、BeginTextの理解は非常に重要です。これは、テキスト関連の操作が有効となる境界を示すためです。PDFBoxを使用してプログラム的にPDFを作成する場合、フォントの設定、テキストの配置、ページへの文字列の書き込みなどのテキスト操作を実行する前に、BeginTextを呼び出す必要があります。テキスト抽出アプリケーションでは、BeginTextを認識することで、テキスト構造を正しく解析し、適切なテキスト順序を維持できます。これは、 ( 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が生成される可能性があります。BeginTextオペレーターはグラフィックス状態にも影響を与え、現在の変換マトリックスなどの特定のパラメーターは、テキストオブジェクト内と外では異なる動作をします。
BeginTextオペレーターがPDFコンテンツストリームで検出されると、いくつかの重要な操作が実行されます。テキストマトリックス(Tm)とテキスト行マトリックス(Tlm)を単位行列[1 0 0 1 0 0]に初期化し、テキスト配置のための一時的な座標系を確立し、PDFプロセッサーに対して後続のオペレーターをテキストレンダリングのコンテキストで解釈すべきことを通知します。Apache PDFBoxでは、コンテンツストリームの解析中にBeginTextクラスが処理されると、PDPageContentStreamの内部状態を更新してテキストオブジェクトがアクティブであることを示します。開発者は通常、contentStream.beginText()を呼び出し、これにより内部的に構築中のコンテンツストリームにBTオペレーターが追加されます。すべてのテキスト配置オペレーター(Td、TD、T*、Tmなど)とテキスト表示オペレーター(Tj、TJ、’、“など)は、BTオペレーターとETオペレーターの間に配置される必要があります。テキストオブジェクトコンテキストは、座標の解釈方法と、テキスト操作全体で現在位置がどのように維持されるかに影響を与え、テキストオブジェクト外のグラフィックス状態に干渉しないテキストレイアウトのための自己完結型の環境を作成します。
- EndText – BeginTextによって開始されたテキストオブジェクトを閉じるオペレーター。PDFコンテンツストリームではETオペレーターとして表現されます
- Content Stream – ページの視覚的な外観を記述するPDFオペレーターとオペランドのシーケンス。BeginTextオペレーターはここに現れます
- Text Matrix – テキストオブジェクト内で確立される変換マトリックスで、テキスト要素の位置、スケール、方向を制御します
- Text Showing Operators – TjやTJなどの実際のテキスト文字列をレンダリングするコマンド。BeginText/EndTextペアの内部に配置される必要があります
- PDPageContentStream – Apache PDFBoxのクラスで、beginText()メソッドを含む、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
- (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
