PDF 構文 インタラクティブ機能 Annotation
PDF構文 (PDF Syntax ISO 32000-2)
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
12.Annotation
Annotation(注釈;アノテーション)は、メモやマルチメディアなどのオブジェクトをPDFページに関連付けたり、マウスやキーボードを使用してユーザーと対話する方法を提供したりします。
注釈タイプの多くは開いた状態または閉じた状態で表示できます。
閉じると、特定の注釈タイプに応じて、アイコン、ボックス、またはゴム印などの特徴的な形式でページに表示されます。
ユーザーが注釈をクリックしてアクティブにすると関連するオブジェクトが表示されます。
12.1 Annotationディクショナリ
ページオブジェクトのオプションAnnotsエントリは、Annotationディクショナリの配列を保持し、それぞれが特定のページに関連付けられたAnnotationを表します。
以下はすべての注釈辞書に共通の必須およびオプションのエントリを示しています。 ディクショナリには各Annotationタイプに固有の追加エントリが含まれる場合があります。
キー | タイプ | 値 |
---|---|---|
Type | name | (オプション)"Annot"と指定 |
Subtype | name | (オプション)このディクショナリが記述する注釈のタイプ |
Rect | rectangle | (必須)既定のユーザー単位でページ上の注釈の位置と大きさを定義 |
Contents | text string | (オプション)注釈に表示される文字列 もしくは、このタイプのAnnotationがテキストを表示しない場合、Annotationの代替説明を人間が読める形式で表示 |
P | dictionary | (オプション)このAnnotationが関連付けられているページ オブジェクトへの間接参照 |
NM< | text string | (オプション)Annotation名 ページ内のすべてのAnnotationで一意に識別できる文字列 |
M | 日付またはtext string | (オプション)Annotationが最後に変更された日時 既定の形式以外でも表示できる必要があります。 |
F | integer | (オプション)Annotationの様々な特性を指定するAnnotationフラグ 既定値:0 |
AP | dictionary | (オプション)注釈がページ上で視覚的にどのように表示されるかを指定するAppearance(アピアランス;外観)ディクショナリ |
AS | name | (必須ただし、APエントリ依存)Appearanceサブディクショナリから適用可能な外観の状態 |
Border | array | (オプション)Annotationのボーダースタイルを指定する配列 |
C | array | (オプション)0.0から1.0の範囲の数値の配列で、次の目的で使用される色を表します。 ・閉じたときのAnnotationアイコンの背景 ・Annotationのポップアップ ウィンドウのタイトル バー ・リンクAnnotationの境界線 配列要素の数によって色空間が決まります。 0 無色;透明 1 DeviceGray 3 DeviceRGB 4 DeviceCMYK |
StructParent | integer | (注釈がStructuralコンテンツアイテムの場合は必須)Structural親ツリー内のAnnotationエントリの整数キー |
OC | dictionary | (オプション)AnnotationのOptional Contentプロパティを指定する、Optional Content Group(OCG;レイヤ)またはOptional Content Membershipディクショナリ |
12.2 Annotationフラグ
AnnotationディクショナリのFエントリの値はAnnotationのさまざまな特性を指定するフラグで符号なし32ビット整数です。 フラグ内のビット位置には、1(下位)から32(上位)までの番号が付けられ、以下の意味を持ちます。
ビット位置 | 名前 | 意味/th> |
---|---|---|
1 | Invisible | 標準のAnnotationタイプのいずれにも属さず、ハンドラが使用できないAnnotationにのみ適用されます。 セットされている場合、未知のAnnotationをレンダリングせず、Printフラグが設定されていても印刷しません。 クリアされている場合、そのAppearanceディクショナリで指定されたAppearanceストリームがあれば、それを使用してそのような未知のAnnotationをレンダリングします。 |
2 | Hidden | セットされている場合、Annotationタイプやハンドラーが使用可能かどうかに関係なく、Annotationをレンダリングしたり、ユーザーとの対話を許可したりしません。 |
3 | セットされている場合、Hiddenフラグもセットされていない限り、ページの印刷時にAnnotationを印刷します。 クリアされている場合、画面にレンダリングされるかどうかに関係なく、をAnnotation印刷しません。 注釈にAppearanceストリームが含まれていない場合このフラグは無視されます。 | |
4 | NoZoom | セットされている場合、ページの倍率に合わせてAnnotationを拡大・縮小しません。ページ上の位置はページの倍率に関係なく固定されたままになります。 |
5 | NoRotate | セットされている場合、ページの回転に合わせてAnnotationを回転しません。 Annotationの左上隅はページの回転に関係なく固定位置に留まります。 |
6 | NoView | セットされている場合、Annotationをレンダリングしたり、ユーザーとの対話を許可したりしません。 Annotationは(Printフラグの設定に応じて)印刷される場合がありますが、画面への表示とユーザーの操作のために非表示と見なされます。 |
7 | ReadOnly | セットされている場合、Annotationがユーザーと対話することを許可しません。Annotationは(NoViewおよびPrintフラグの設定に応じて)レンダリングまたは印刷できますが、マウスクリックに応答したりマウスの動きに応答して外観を変更しません。 |
8 | Locked | セットされている場合、ユーザーによるAnnotationの削除またはそのプロパティ(位置とサイズを含む)の変更を許可しません。 ただし、このフラグはフォームフィールドの値などのAnnotation内容に対する変更を制限しません。 |
9 | ToggleNoView | セットされている場合、Annotationの選択とマウスホバリングのNoViewフラグの解釈を反転し、マウスポインタがAnnotationの上に置かれたとき、またはAnnotationが選択されたときに表示されるようにします。 |
10 | LockedContents | セットされている場合、ユーザーによるAnnotation内容の変更を許可しません。 このフラグは、Annotationの削除、位置またはサイズなどの他のAnnotationプロパティの変更を制限しません。 |
12.3 ボーダー スタイル
Annotationは表示または印刷するときにオプションでボーダー(境界)線で囲むことができます。
指定されている場合、ボーダーはAnnotation四角形の内側に完全に描画されます。
ボーダースタイルはいkのディクショナリによって決定されます。
キー | タイプ | 値 |
---|---|---|
Type | name | (オプション)"Border"と指定 |
W | number | (オプション)境界線の幅(ポイント単位) この値が0の場合に境界線は描画されません。 既定値:1 |
S | name | (オプション)境界線の種類 S (Solid)実践 D (Dashed)破線 詳細は"D"エントリによって指定 B (Beveled)浮き上がって見える境界 I (Inset)くぼんで見える境界 U (Undeline)Annotation下部に沿った1本の線 既定値:S |
D | array | (オプション)破線の境界線を描画するために使用される破線と間隙のパターンを定義するDash Array Dash Arrayはグラフィック状態の破線パターン パラメータと同じ形式で指定します。ただし、ダッシュフェーズは指定されておらず0と見なされます。たとえば、[ 3 2 ] の場合、3ポイントのダッシュと2ポイントのギャップが交互に表示される境界線を指定します。 既定値:[3] |
12.4 Appearanceストリーム
Annotationの外観(Appearance;アピアランス)は単純な境界線と色による指定だけでなく、1つ以上のAppearanceストリームを指定できます。
Appearanceストリームを使用すると様々な方法でAnnotationを視覚的に表示してユーザーとのやり取りに反映できます。
Appearanceストリームは、フォームXObjectで、Annotationの四角形内にレンダリングされる自己完結型のコンテンツストリームです。
Annotationは最大で3つの違った外観を定義できます。
- 通常の外観:Annotationがユーザーと対話していない場合
この外観はAnnotationの印刷にも使用されます。 - ロールオーバーの外観:ユーザーがマウス ボタンを押さずにAnnotationのアクティブ領域にカーソルを移動した場合
- ダウン(マウスボタン押下)の外観:Annotationのアクティブ領域内でマウスボタンを押すか押したままにした場合
上記の3つの外観は以下のAppearanceディクショナリで定義されます。
このディクショナリは、AnnotationディクショナリのAPエントリの値です
キー | タイプ | 値 |
---|---|---|
N | streamまたは dictionary | (必須)[Normal]:通常の外観指定値 |
R | streamまたは dictionary | (オプション)[Rollover]:ロールオーバーの外観指定値 既定値:Nエントリの値 |
D | streamまたは dictionary | (オプション)[Down]:下線の外観指定値 既定値:Nエントリの値 |
Appearanceディクショナリの各エントリには単一のAppearanceストリームまたはAppearanceサブディクショナリのいずれかが含まれる場合があります。後者の場合サブディクショナリはAnnotationのさまざまな外観の状態に対応する複数のAppearanceストリームを定義します。
12.5 Annotationタイプ
PDFは以下の標準Annotationタイプをサポートします。
各タイプの詳細は、PDF Reference 1.7 「8.4.5 Annotation Types」、または ISO32000-2 「12.5.6 Annotation Types」を参照してください。
12.6 Widgetアノテーション
インタラクティブ フォームは、Widget(ウィジェット)アノテーションを使ってその外観とユーザーとの対話を管理します。
フィールドに関連するWidgetアノテーションが1つしかない場合、FieldディクショナリとAnnotationディクショナリの内容を単一のディクショナリに統合できます。
Widget Annotationのフィールドディレクトリには以下の追加項目があります。
キー | タイプ | 値 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Subtype | (必須)"Widget"を指定 | |||||||||||
H | (オプション)マウス ボタンがそのアクティブ領域内で押された、または押し下げられたときに使用される視覚効果(Highlighting)
既定値:I | |||||||||||
MK | (オプション)Annotationの視覚的表現を指定する動的なAppearanceストリームを構築する際に使用されるAppearanceストリーム ディクショナリ | |||||||||||
A | (オプション)Annotationがアクティブ化されたときに実行されるアクション | |||||||||||
AA | (オプション)様々なトリガー イベントに応答するAnnotationの動作を定義する追加アクション ディクショナリ | |||||||||||
BS | (オプション)Annotation境界線のを定義するスタイル ディクショナリ | |||||||||||
Parent | (オプション)WidgetAnnotationの親フィールドへの参照 |