PDF 構文 ドキュメント カタログ

PDF構文 (PDF Syntax ISO 32000-1)

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

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

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

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

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

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

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

キータイプ
Typename(必須)"Catalog"を指定
Versionname(オプション)PDFファイルのヘッダー(Header)に記載されたバージョンより古い場合は、無視されます。PDF文書が更新され更新前のバージョンより新しくなった場合は、ここで指定されます。
Pagesdictionary(必須)ページ・ツリー(Page Tree)
PageLayoutname(オプション)文書を表示したときのレイアウトを指定
以下の値で指定します。
  • SinglePage
  • 1ページを表示
  • OneColumn
  • 1っのカラムでページを表示
  • TwoColumnLeft
  • 2っのカラムでページを表示、奇数ページが左カラム
  • TwoColumnRight
  • 2っのカラムでページを表示、奇数ページが右カラム
  • TwoPageLeft
  • 2ページを同時に表示、奇数ページが左側
  • TwoPageRight
  • 2ページを同時に表示、奇数ページが右側
既定値は、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
>>
指定PDFファイルのCatalogオブジェクトを解析します。
(このブラウザでは機能しません。)

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
指定PDFファイルのページツリーオブジェクトを抽出します。
(このブラウザでは機能しません。)

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
指定PDFファイルのページオブジェクトを抽出します。
(このブラウザでは機能しません。)

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オブジェクト」を参照してください。

ご質問 ・ お問い合わせ

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


PDF Toolsライト

PDF 構文解説

(ISO32000-1より)

PDF Tools製品概要