Matrix(Matrix (PDFBox))
Apache PDFBoxのMatrixクラスは、PDF文書内のグラフィックスやテキスト操作における座標系を操作するための3x3アフィン変換行列を表現します。
Apache PDFBoxのMatrixクラスは、PDF文書内のグラフィックスやテキスト操作における座標系を操作するための3x3アフィン変換行列を表現します。変換行列は ( 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ページ上のコンテンツを拡大縮小、回転、移動、傾斜させることを可能にします。PDFBoxのMatrixクラスは、PDF内容を作成または操作する際にこれらの数学的変換を扱うことを簡素化するJava実装を提供します。
PDFBoxのMatrixクラスは3x3アフィン変換行列のJava表現ですが、PDF座標変換では最下行が常に[0, 0, 1]であるため、通常は6つの主要な値(a、b、c、d、e、f)で動作します。このクラスは、座標空間を変換するために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 ) で定義されている数学的操作をカプセル化しています。汎用的な変換ライブラリとは異なり、PDFBoxのMatrixはPDF操作専用に設計されており、テキストの配置、画像の配置、グラフィックス状態の操作など、PDFの一般的なユースケースに特化したメソッドを含んでいます。このクラスは、可変操作(行列をその場で変更)と不変操作(新しい行列インスタンスを返す)の両方を提供し、開発者がコード構造に最適なアプローチを選択できるようにしています。
Matrixクラスを理解し、正しく使用することは、PDFBoxを使用してコンテンツの配置と外観を正確に制御する開発者にとって不可欠です。行列は、ページの回転、画像の拡大縮小、正確な座標へのテキストの配置、グラフィックオブジェクトへの複雑な変換の適用など、基本的な操作を制御します。 ( 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文書を扱う場合、変換行列の適切な使用により、コンテンツの配置が論理的な読み順や構造を妨げないことが保証されます。Matrixクラスを習得した開発者は、洗練されたPDFレイアウトをプログラム的に作成し、正確な幾何学情報を持つコンテンツを抽出し、視覚的な忠実性を保ちながら既存のPDFを操作できます。行列操作が正しくない場合、コンテンツの配置ミス、グラフィックスの歪み、またはアクセシブルでない文書が生じることがよくあります。
Matrixクラスは、標準的なPDF変換行列形式[a b c d e f]で動作し、次の式を使用してある空間から別の空間へ座標をマッピングします:x’ = ax + cy + e、y’ = bx + dy + f。6つの値は変換の異なる側面を制御します:「a」と「d」はx軸とy軸に沿った拡大縮小を処理し、「b」と「c」は回転と傾斜を制御し、「e」と「f」はそれぞれx軸とy軸に沿った平行移動(移動)を表します。PDFBoxは、6つの値を手動で計算することなく一般的な操作用の行列を生成するために、createRotation()、createScale()、createTranslation()などの便利なメソッドを提供します。行列はconcatenate()メソッドを使用して連結(乗算)し、複数の変換を組み合わせることができます。連結の順序は重要であり、回転してから平行移動を適用すると、平行移動してから回転とは異なる結果が生じます。このクラスには、特定の点を変換する(transformPoint())、逆変換のために行列を反転する(createInverse())、分析目的で拡大縮小率や回転角度などの変換プロパティを抽出するメソッドも含まれています。
- Content Stream – 変換行列が適用される、ページ内容を定義するPDF演算子とオペランドのシーケンス
- Graphics State – 現在の変換行列を含む、グラフィックス操作がどのようにレンダリングされるかを制御するパラメータの集合
- User Space – PDF内容が定義される座標系であり、行列によってデバイス空間に変換される
- Text Matrix – テキスト文字の配置と方向付けに特化した専用の変換行列
- Affine Transformation(アフィン変換) – 点、直線、平面を保持する幾何学的変換であり、すべての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
