トラスト・ソフトウェア・システム
ホーム > 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 構文 テキスト」へ <<< >>>「PDF文書のナビゲーション」へ


4.ドキュメント カタログ (Document Catalog)

PDF構造

カタログ(Catalog)ディクショナリは、PDF文書のオブジェクト階層のルート(最上位)です。カタログ ディクショナリは、トレイラーRoot項目に記載されます。
多くの場合、カタログ ディクショナリへのリファレンスとしてRoot項目に記載されています。
ドキュメント カタログには以下が含まれます。

  • 文書内容 (docoment contents)
  • しおり (アウトライン、outlines)
  • 記事スレッド (article threads)
  • 名前の付いた到達先 (named destinations)
  • 他の属性 (other attributes)
  • PDF文書を表示する際の情報

右上の図は、PDFの構造をそのルートであるカタログ ディクショナリから示したものです。(PDF構造の拡大画像)


4.1 カタログ(Catalog) ディクショナリの項目

カタログ(Catrog)ディクショナリには以下の項目が記載されます。

キータイプ
Typename(必須)"Catalog"を指定
Versionname(オプション)PDFファイルのヘッダー(Header)に記載されたバージョンより古い場合は、無視されます。PDF文書が更新され更新前のバージョンより新しくなった場合は、ここで指定されます。
Pagesdictionary(必須)ページ・ツリー(Page Tree)
PageLayoutname(オプション)文書を表示したときのレイアウトを指定
以下の値で指定します。
SinglePage1ページを表示
OneColumn1っのカラムでページを表示
TwoColumnLeft2っのカラムでページを表示、奇数ページが左カラム
TwoColumnRight2っのカラムでページを表示、奇数ページが右カラム
TwoPageLeft2ページを同時に表示、奇数ページが左側
TwoPageRight2ページを同時に表示、奇数ページが右側
既定値は、SinglePageです。
PageModename(オプション)文書を表示した時の全体構成を指定
以下の値で指定します。
UseNoneしおり、サムネール画像を非表示
UseOutlinesしおりを表示
UseThumbsサムネール画像を表示
FullScreenフルスクリーン・モード表示
UseOCオプショナル コントロール パネル表示
UseAttachementsアタッチメント パネル表示
既定値は、UseNoneです。
Outlinesdictionary(オプション)アウトライン(Outlines)のルートへの参照を指定
アウトラインは、文書の概要を階層で示した情報です。
Threadsarray(オプション)Articlesノード オブジェクトへの参照
OpenActionarray /
dictionary
(オプション)文書を開くときの動作を指定します。
arrayの場合はDestinationsを表し、dictionaryの場合はActionsを表します。
AcroFormdictionary(オプション)Interactive Form Dictionary(入力フォーム)を指定
Metadatastreams(オプション)Metadata Streamsを表すインダイレクトオブジェクトへの参照

オブジェクトのタイプは「2.5オブジェクト」を参照してください。


以下は、カタログ ディクショナリの例です。HelloWorld.pdfデータのオブジェクト番号7がカタログ ディクショナリです。

7 0 obj
<<
  /Type /Catalog
  /Pages 5 0 R
>>

4.2 ページ・ツリー(PageTree) ディクショナリー

PDFのリーダーは、ページ・ツリー ディクショナリーの情報を使って文書内のページをその順番どおりにアクセスします。カタログ ディクショナリのPages項目から参照されます。

ページ・ツリー ディクショナリには以下の項目が含まれます。

キータイプ
Typename(必須)"Pages"を指定
Parentdictionary(必須)親オブジェクトへの参照
Kidsarray(必須)子ノード オブジェクトへの参照
子ノードは、ページ(Page)または、ページ・ツリー(Page Tree)オブジェクトです。
Countinteger(必須)このPage Treeの子孫であるPageの数

オブジェクトのタイプは「2.5オブジェクト」を参照してください。


以下は、PageTreeディクショナリの例です。

2 0 obj
  << /Type /Pages
    /Kids [ 4 0 R
            10 0 R
          ]
    /Count 2
  >>
endobj

4 0 obj
  << /Type /Page
    ・・・このページの属性を記述する追加の項目・・・
  >>
endobj

10 0 obj
  << /Type /Page
    ・・・このページの属性を記述する追加の項目・・・
  >>
endobj

4.3 ページ(Page)オブジェクト

ページ ツリーの枝葉に当たる部分がページ(Page) オブジェクトです。それぞれのページオブジェクトは、PDF文書内の単一ページの属性を指定します。

ページ ディクショナリには以下の項目が含まれます。

キータイプ
Typename(必須)"Page"を指定
Parentdictionary(必須)直接の親オブジェクト
MediaBox四角形(必須)表示または印刷される際のページのサイズ
Rotateinteger(オプション)表示または印刷される際のページの回転角度
回転は時計方向とします。角度は、90の倍数でなければなりません。既定値は、0です。
Thumbstream(オプション)このページのサムネール画像のストリーム オブジェクトを指定
Annotsarray(オプション)このページに関連するアノテーションを指定

オブジェクトのタイプは「2.5オブジェクト」を参照してください。


以下は、ページ(Page) ディクショナリの例です。

3 0 obj
  << /Type /Page
    /Parent 4 0 R
    /MediaBox [ 0 0 612 792 ]
    /Resources << /Font << /F3 7 0 R
                           /F5 9 0 R
                           /F7 11 0 R
                        >>
                  /ProcSet [ /PDF ]
               >>
    /Contents 12 0 R
    /Thumb 14 0 R
    /Annots [ 23 0 R
              24 0 R
            ]
  >>
endobj

4.4 Articlesノード

一般的な記事(ニュース)のように、物理的には順番が無いけれども論理的にはそれらに関連があるような項目をまとめるためのディクショナリです。Articlesノードは、カタログ ディクショナリのThreads項目から参照されます。
記事をThreadで表しその記事に関連した参照をBeadを使ったチェーンで順番に表します。


4.4.1 Thread
Threadディクショナリには以下の項目が含まれます。

キータイプ
Typename(オプション)"Thread"を指定
Fdictionary(必須)threadの最初のbeadオブジェクトへの参照
Idictionary(オプション)threadの情報を表すディクショナリ

4.4.2 Bead
Beadディクショナリには以下の項目が含まれます。

キータイプ
Typename(オプション)"Bead"を指定
Tdictionary(threadの最初のbeadの場合に必須;それ以外はオプション)このbeadが所属するthread
Ndictionary(必須)次のbeadへの参照
Vdictionary(必須)直前のbeadへの参照
Pdictionary(必須)このbeadが含まれているpageへの参照
Rrectangle(必須)このbeadのpage上の領域(rectangle)

オブジェクトのタイプは「2.5オブジェクト」を参照してください


4.5 デスティネーション(Destinations)

デスティネーション(Destinations)は、PDF文書のハイパーリンクやしおりなどを使ってページのナビゲーションが発生した場合のページの移動先の様々な情報です。
このデスティネーションには、ナビゲートされたページの表示方法(文書のビュー)やページを表示する際の動作(アクション(Actions))を指定されます。
デスティネーションが指定する内容は以下のとおりです。

  • 表示されるべきページ
  • そのページをウインドウのどの位置に表示するか
  • 表示する際の倍率(ズーム)

これらの情報は、以下の構文で指定します。

構文意味
[page /XYZ left top zoom]zoomに拡大されたコンテンツをウィンドウの左上からの座標(left,top)に表示
[page /Fit]ウインドウにフィットするように表示
[page /FitH top]ウインドウ上端からのtop位置に表示
[page /FitV left]ウインドウ左端からのleft位置に表示
[page /FitR left bottom right top]ウインドウ内の領域(left,bottom,right,top)に表示
[page /FitB]ウインドウのバンディング領域にフィットするように表示
[page /FitBH top]ウインドウ上端からのtop位置でウインドウのバンディング幅にフィットするように表示
[page /FitBV left]ウインドウ左端からのleft位置でウインドウのバンディング高さにフィットするように表示

4.6 アクション(Actions)

PDF文書は、文書内のリンクを表現できます。リンクでは、到達先の表示方法(到達先(Destinations))や到達先を表示する際のアクション(Actions)を指定できます。
アクションは、このリンクの到達先を表示した際の動作を定義します。

動作は、以下のアクション ディクショナリの項目で指定されます。

キータイプ
Typename(オプション)"Action"を指定
Sname(必須)動作内容
Nextdictionary /
array
(オプション)現在の動作に続く、次の動作

オブジェクトのタイプは「2.5オブジェクト」を参照してください。

PDF 構文 テキスト」へ <<< >>>「PDF文書のナビゲーション」へ


ご質問、お問い合わせ

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




スリーソフト作者の方へ

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