PDF 構文 PDF文書のナビゲーション
PDF構文 (PDF Syntax ISO 32000-2)
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
7.PDF文書のナビゲーション
PDF文書には、その文書の概略を階層的に示したアウトライン(Outline)やページの内容を小さな画像にしたサムネール(Thumbnail)を含めることができます。
アウトラインは、ブックマーク(Bookmark)とも呼ばれます。
一般的なPDFのビュワーは、その情報を使ってPDFの閲覧者と対話的にページをナビゲートできます。
7.1 デスティネーション(Destinations)
デスティネーション(Destination)は、どのページを表示するか、そのページをどのように表示するか、表示する際に拡大(または縮小)するかなどを指定します。 デスティネーションは、アウトラインやアノテーションなどに関連付けて指定されます。
デスティネーションの情報は、以下の構文で指定します。
構文 | 意味 |
---|---|
[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位置でウインドウのバンディング高さにフィットするように表示 |
7.2 アウトライン(Outlines)
PDF文書にはしおりの情報が含まれていることがあります。
PDF文書のビュワーはこの情報を使ってしおりを表示し、PDFの閲覧者のマウスやキーボードによる操作で目的のページを直接表示することができます。
アウトライン(Outline)はカタログ ディクショナリのOutlines項目から参照されます。
アウトライン ディクショナリには、以下の項目が含まれます。
キー | タイプ | 値 |
---|---|---|
Type | name | (オプション)"Outlines" |
First | dictionary | (必須)アウトラインのトップ レベルで最初のアウトライン アイテム ディクショナリへの参照を指定 |
Last | dictionary | (必須)アウトラインのトップ レベルで最後のアウトライン アイテム ディクショナリへの参照を指定 |
Count | integer | (必須)アウトラインのすべてのレベルで開いている階層の総数 |
オブジェクトのタイプは「2.5オブジェクト」を参照してください。
アウトライン ディクショナリの例は、次の項目を参照してください。
7.3 アウトライン アイテム(Outline Item) ディクショナリ
アウトライ アイテムン ディクショナリには、以下の項目が含まれます。
キー | タイプ | 値 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Title | text string | (必須)このアイテムのテキストとして表示されるべきもの | |||||||||
Parent | dictionary | (必須)このアイテムの親であるアウトライン階層 | |||||||||
Prev | dictionary | (必須)このアウトラインレベルでの前の項目 | |||||||||
Next | dictionary | (必須)このアウトラインレベルでの前の項目 | |||||||||
First | dictionary | (必須)このアイテムの直接の子で最初の項目 | |||||||||
Last | dictionary | (必須)このアイテムの直接の子で最後の項目 | |||||||||
Count | integer | このアイテムの子孫の総数 アイテムが閉じている場合は、負数が指定されます。 | |||||||||
Dest | name / byte string / array | (オプション)デスティネーションを指定 | |||||||||
A | dictionary | (オプション)このアイテムが有効になった後に実施される動作 | |||||||||
C | array | (オプション)アウトライン項目の色を3要素の配列で指定 DeviceRGBカラーで各色項目を0.0から1.0で指定します。既定値は、[0.0 0.0 0.0] | |||||||||
F | integer | (オプション)アウトライン項目の文字のスタイルを指定します。 以下の値で指定します。フラグのビット位置がオンの場合に以下のスタイルになります。
|
オブジェクトのタイプは「2.5オブジェクト」を参照してください。
以下は、アウトラインおよびアウトライン アイテムの例です。
21 0 obj << /Count 6 /First 22 0 R /Last 29 0 R >> endobj 22 0 obj << /Title ( Chapter 1 ) /Parent 21 0 R /Next 26 0 R /First 23 0 R /Last 25 0 R /Count 3 /Dest [ 3 0 R /XYZ 0 792 0 ] >> endobj
7.4 サムネール画像
PDF文書はサムネール画像(ページ内容を小さな画像に変換したもの)を定義できます。
PDFのビュワー アプリケーションはこの画像を画面に表示してクリックされた画像のページにナビゲートするために使用します。
ナビゲートが不要な場合は削除してもPDF文書本文の表示内容は変化しません。そのため、サムネール画像を削除することでPDFファイルサイズを縮小することもできます。
「PDF Optimizer」を使ってPDFファイルからサムネール画像を削除できます。
サムネール画像はページ オブジェクトのThumb項目で指定されたXObject(画像を定義するためのオブジェクト)です。
以下は、サムネール画像の例です。
12 0 obj << /Width 76 /Height 99 /ColorSpace /DeviceRGB /BitsPerComponent 8 /Length 1234 /Filter [ /ASCII85Decode /DCTDecode ] >> stream s4IA>!"M;*Ddm8XA,lT0!!3,S!/(=R!<E3%!<N<(!WrK*!WrN, ・・・データ省略・・・ endstream endobj