トラスト・ソフトウェア・システム
ホーム > PDF Tools トップ > PDF Tools ライト > PDF 構文

PDF構文 (PDF Syntax ISO 32000-1)

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

PDF 構造 -各部-」へ <<< >>>「ドキュメント カタログ」へ


3.テキスト

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


3.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
    テキストオブジェクトの終了


3.2 フォント定義

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

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

フォントの指定は、日本語を指定する場合や、フォント埋め込みの有無などでその方法が違います。


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

テキストを表示する際には、その色を指定することはもちろん、文字のパスの描画、塗りつぶしおよびパスを使って別のオブジェクトをクリップするように指定することができます。
以下のコマンドでは、50%のグレーでテキストを塗りつぶして表示します。

BT
   /F13 48 Tf
   20 40 Td
   0 Tr
   0.5 g
   (ABC) Tj
ET

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

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

3.4 テキスト表示のパラメータ

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

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

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

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

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

レンダリングモード
Tr=0 Tr=1 Tr=2 Tr=3
塗りつぶし パスを描く 塗りつぶし
パスを描く
塗りつぶしなし
パスを描かない
 
Tr=4 Tr=5 Tr=6 Tr=7
塗りつぶし
パスでクリップ
パスを描く
パスでクリップ
塗りつぶし
パスを描く
パスでクリップ
塗りつぶしなし
パスを描かない
パスでクリップ

テキストライズ
(This text is ) Tj
5 Ts
(superscripted) Tj
Tj(This text is ) Tj
–5 Ts
(subscripted) Tj
Tj(This ) Tj
–5 Ts
(text ) Tj
5 Ts (moves ) Tj
0 Ts

(around) Tj

3.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 ] を指定します。

PDF 構造 -各部-」へ <<< >>>「ドキュメント カタログ」へ


ご質問、お問い合わせ

メールで support@TrustSS.co.jp 宛てにお送りください。
または、質問のページからお送りいただくようお願いします。ご要望も承っております。(匿名で送れます。)




スリーソフト作者の方へ

PDF Easy Parseライブラリを無償で利用できるプログラムがあります。
こちらを参照してください。