Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

MoveTextSetLeading

MoveTextSetLeadingは、Apache PDFBoxにおいてPDFドキュメント内のテキスト行間の垂直方向の間隔を制御するオペレータクラスです。

キーワード: movetextsetleading, MoveTextSetLeading

概要

MoveTextSetLeadingは、Apache PDFBoxにおいてPDFドキュメント内のテキスト行間の垂直方向の間隔を制御するオペレータクラスです。このオペレータは、テキストの行送り(行間隔)を設定すると同時に、テキスト位置を次の行の先頭に移動させる処理を1つの操作で実行します。PDF仕様 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) によれば、適切なテキスト配置と行送り制御は、整形されたアクセシブルなPDFドキュメントを作成するために不可欠です。

定義

MoveTextSetLeadingは、PDF仕様で定義されているPDFテキスト配置オペレータ「TD」(行送りを伴うテキスト位置指定)のJavaクラス実装です。このオペレータは2つの機能を組み合わせています。行送りパラメータ(テキストのベースライン間の垂直距離)を設定し、同時に現在のテキスト位置を移動させます。テキスト位置の移動のみを行う単純なテキスト配置オペレータ「Td」や、行送りの設定のみを行う「TL」とは異なり、MoveTextSetLeadingは両方の操作をアトミックに実行します。PDFBoxのコンテンツストリーム処理アーキテクチャにおいて、このクラスはOperatorProcessorベースクラスを継承しており、PDFの解析やコンテンツストリーム処理中に「TD」オペレータが検出されると呼び出されます。

このオペレータは2つの数値パラメータを受け取ります。tx(水平方向の変位)とty(垂直方向の変位)です。重要な点として、tyパラメータは二重の目的を持ちます。テキスト位置をty単位だけ垂直方向に移動させると同時に、テキスト行送りを-ty(負の値に注意)に設定します。この設計は、PDFの座標系を反映しています。PDFでは、正の値は通常上方向への移動を意味しますが、行送りは慣例的に下方向への行間隔として正の値で表現されます。

重要性

Apache PDFBoxを使用してPDFテキスト抽出、コンテンツ解析、またはドキュメント生成を行う開発者にとって、MoveTextSetLeadingの理解はテキストレイアウトと配置を正確に解釈するために極めて重要です。PDFコンテンツストリームを解析する際、このオペレータは位置変更とフォーマットパラメータの更新の両方を示しており、後続のテキスト描画操作の配置方法に影響を与えます。このオペレータの不適切な処理は、特に論理的な読み順序を維持したり、PDF/UA ( Citation: N.A., (N.A.). (). 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 ) などの規格で要求されるアクセシビリティ目的でドキュメント構造を再構築しようとする際に、誤ったテキスト抽出結果につながる可能性があります。

ドキュメント生成ワークフローにおいては、このオペレータを効率的に使用することで、2つの操作を1つのコマンドに統合し、PDFファイルサイズを削減できます。特に、一貫した行間隔を維持しながらテキストの行を進める必要がある複数行のテキストブロックを作成する際に重要です。適切なタグ構造 ( Citation: , (). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を持つアクセシブルなPDFを作成する開発者は、視覚的なレイアウトと論理的なコンテンツ順序の間の意味的関係を維持するために、MoveTextSetLeadingのようなテキスト配置オペレータが正しく使用されることを確保する必要があります。

仕組み

Apache PDFBoxがPDFコンテンツストリームを処理し、「TD」オペレータに遭遇すると、MoveTextSetLeadingプロセッサクラスをインスタンス化または呼び出します。オペレータはオペランドスタックから2つのオペランドを抽出します。tx(水平オフセット)とty(垂直オフセット)です。プロセッサはその後、グラフィックス状態に対して2つの操作を実行します。

まず、グラフィックス状態のテキスト行送りパラメータ(Tl)を-tyに更新します。この負の値への変換は、PDF仕様の慣例であり、正の行送り値が後続のテキスト操作で下方向の行間隔を生成するようにします。この行送り値は、現在の行送り設定に依存する「T*」(次の行の先頭に移動)などの他のオペレータによって使用されます。

次に、現在のテキスト位置を水平方向にtx単位、垂直方向にty単位だけ平行移動させることによって、テキスト行列を更新します。この平行移動は、現在のテキスト行の開始位置を追跡するテキスト行行列(Tlm)に適用されます。計算は行列変換に従います。Tlm = [1 0 0 1 tx ty] × Tlm。

PDFBoxのコードにおいて、開発者は通常、既存のPDFを処理する際にコンテンツストリームパーサを通じて、または新しいPDFを作成する際にPDPageContentStream APIを通じてこのクラスに遭遇します。このクラスはPDFBoxのグラフィックス状態管理システムと統合されており、コンテンツストリーム処理全体を通じて正確なテキスト配置を維持します。これは、で説明されている視覚的レイアウトから読み順序を再構築する必要があるテキスト抽出アルゴリズムにとって不可欠です。

関連用語

  • Text Matrix(テキスト行列) – テキスト空間座標をユーザー空間にマッピングする変換行列で、テキストグリフの位置、スケール、回転を制御します
  • Text Leading(テキスト行送り) – 連続するテキスト行のベースライン間の垂直方向の間隔で、テキスト空間単位で測定されます
  • Content Stream(コンテンツストリーム) – ページの外観を記述するオペレータとオペランドのシーケンスを含むPDFストリームオブジェクトです
  • PDPageContentStream – PDFページにテキストを含むコンテンツを適切な配置で追加するための高レベルAPIを提供するApache PDFBoxクラスです
  • Graphics State(グラフィックス状態) – テキストを含むグラフィカル要素がPDF内でどのようにレンダリングされるかを制御するパラメータのコレクションで、現在位置、色、テキストパラメータなどが含まれます

出典

(N.A.) (2020)
(N.A.). (). 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)
(). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
(N.A.) (2014)
(N.A.). (). 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