PDF 構文 テキスト

PDF構文 (PDF Syntax ISO 32000-2)

PDF1.7は、ISO技術委員会によって2008年1月に“ISO 32000-1規格”として承認されました。2017年7月にはPDF2.0の規格ISO3200-2が承認され、2020年12月にはそれが第二稿に更新されました。
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。

5.テキスト

テキストは指定されたフォントのグリフ(字形)を様々に指定された方法で表示されます。
ここではテキストを表示するためにオブジェクトに記載する具体的な内容を説明します。
PDFで使用するテキストやグラフィックスの描画コマンドはPostScript言語をPDF用に特化したそのサブセットです。また、PDFの原点(x=0,y=0)はウィンドウの左下で、画面の解像度を既定では1インチあたり72画素(1単位は1/72インチ)としています。ただし、UserUnitの指定によって解像度を変更できます。

5.1 テキスト描画演算子

PDFでは、以下のようなコマンドでテキストをページに描画(表示)します。

BT
   /F13 12 Tf
   288 720 Td
   (ABC) Tj
ET

上記例にあるワードが描画演算子で、それらの意味は以下のとおりです。

  • BT
    テキストオブジェクトの開始
  • 名前 サイズ Tf
    フォントを指定
    F13(フォント定義参照)という名前の付いたフォントを使って12ポイントの大きさで表示します。
  • x座標 y座標 Td
    開始位置を指定
    左から4インチ(4x72=288)、下から10インチ(10x72=720)を開始位置に指定します。
  • テキスト Tj
    テキストを描画
    テキスト文字列 「ABC」 を描画します。
    しかし、指定されるのは必ずしも文字列や文字コードではありません。
  • ET
    テキストオブジェクトの終了

5.2 フォント定義

Resourcesとしてのフォントの定義例を示します。
この例ではHelvaticaフォントを 「SF1」 として定義しています。

/Resources
   << /Font << /SF1 1 0 R >>
   >>
1 0 obj
   << /Type /Font
      /Subtype /Type1
      /Encoding /WinAnsiEncoding
      /BaseFont /Helvetica
   >>
endobj

1 0 objはフォントディクショナリです。詳細は「6.フォント」を参照してください。
フォントの指定は日本語を指定する場合や、フォント埋め込みの有無などでその方法が違います。

5.3 テキストへのグラフィックな効果

テキストを表示する際はその色を指定することはもちろん、文字のパス・図形のパス・塗りつぶしを使って別のオブジェクトをクリップするように指定することができます。

以下のコマンドでは、50%のグレーでテキストを塗りつぶして表示します。

BT
   /F13 48 Tf
   20 40 Td
   0 Tr
   0.5 g
   (ABC) Tj
ET
50%グレー文字

次のコマンドでは線幅2でテキストのパスを描画します。

BT
   /F13 48 Tf
   20 38 Td
   1 Tr
   2 w
   (ABC) Tj
ET
枠線文字

5.4 文字間隔・行間隔、レンダリングモード

テキストにはグラフィック効果だけでなく文字間隔・行間隔などを指定できます。以下のコマンドでそれらを指定します。

コマンド意味
Tc文字間隔文字と文字の間隔を指定
Tw単語間隔単語と単語の間隔を指定
Tz文字の幅文字の幅を%で指定
TL行間隔ベースラインと次の行のベースラインの間隔を指定
Tfフォント サイズフォントおよびそのサイズを指定
Trレンダリングモード塗りつぶしやパスの描画の方法を指定
Tsテキストライズの方向と距離テキストをベースラインの上下へ移動方法を指定

文字間隔
Tc=0 (既定値)
Tc=0
Tc=0.25
Tc=0.25

単語間隔
Tw=0 (既定値)
Tw=0
Tw=2.5
Tw=2.5

文字の幅
Th=100 (既定値)
Th=100
Th=50
Th=50

ベースラインと次の行のベースラインの間隔
TL=14.5
TL=14.5

レンダリングモード
Tr=0
Tr=0
塗りつぶし
Tr=1
Tr=1
パスを描く
Tr=2
Tr=2
塗りつぶし
パスを描く
Tr=3
Tr=3
塗りつぶしなし
パスを描かない

Tr=4
Tr=4
塗りつぶし
パスでクリップ
Tr=5
Tr=5
パスを描く
パスでクリップ
Tr=6
Tr=6
塗りつぶし
パスを描く
パスでクリップ
Tr=7
Tr=7
塗りつぶしなし
パスを描かない
パスでクリップ
テキストライズ

(This text is ) Tj
5 Ts
(superscripted) Tj
5 Ts
Tj(This text is ) Tj
–5 Ts
(subscripted) Tj
-5 Ts
Tj(This ) Tj
–5 Ts
(text ) Tj
5 Ts (moves ) Tj
0 Ts
(around) Tj
5 Ts 0 Ts

5.5 座標系

PDFの原点(x=0,y=0)は左下で、1単位は1/72インチです。この座標系にフォントのグリフ(字形)を表示させるためには大きさや位置を指定しての変換が必要になります。PDFでは以下の行列を使ってその変換を実施します。

 ab0 
 cd0 
 ef1 

この行列は以下の変換式に利用します。

x' = a・x + c・y + e
y' = b・x + d・y + f

PDFでは変換の行列を表すためにその定数要素を除いた6っの値を組み合わせて [ a b c d e f ]としたarray(配列)を使用します。 これによって以下のように置き換え(移動)・拡大縮小・回転・ゆがみを実施します。

置き換え 拡大縮小 回転 ゆがみ

置き換え
[ 1 0 0 1 tx ty ] を指定します。

拡大縮小
[ sx 0 0 sy 0 0 ] を指定します。

回転
[ cos(q) sin(q) -sin(q) cos(q) 0 0 ] を指定します。

ゆがみ
[ 1 tan(a) tan(b) 1 0 0 ] を指定します。

ご質問 ・ お問い合わせ

 メールで support@TrustSS.co.jp 宛てに、または 質問のページからお送りいただくようお願いします。
ご要望も受け付けております。


PDF Toolsライト

PDF 構文解説

(ISO32000-2より)

PDF Tools製品概要