PDF 構文 インタラクティブ機能 Annotation
PDF構文 [PDF Syntax ISO 32000-2]
ここでは32000-2規格に基づいたPDF2.0の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
13.Annotation
Annotation(注釈;アノテーション)は、メモやマルチメディアなどのオブジェクトをPDFページに関連付けたり、マウスやキーボードを使用してユーザーと対話する方法を提供したりします。
注釈タイプの多くは開いた状態または閉じた状態で表示できます。
閉じると、特定の注釈タイプに応じて、アイコン、ボックス、またはゴム印などの特徴的な形式でページに表示されます。
ユーザーが注釈をクリックしてアクティブにすると関連するオブジェクトが表示されます。
13.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のボーダースタイルを指定する配列 規定値: [0 0 1] |
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ディクショナリ Annotationが描画される前にこのエントリとFエントリで指定されたAnnotationフラグに基づいてAnnotationの可視性が決定される。 不可視と判断された場合にAnnotationは描画されない。 |
AF | array of dictionary | (省略可)このAnnotationに関連付けられたファイルを示す1つ以上のFile Specification(ファイル仕様)ディクショナリの配列 |
ca | number | (省略可)閉じた状態にあるAnnotationの外観ストリームを再生成する場合の非ストローク操作に使用される不透明度の値 Annotationを開いたときに表示されるポップアップウィンドウには適用されない。 既定値:1.0 AnnotationにAppearance Stream(外観ストリーム)がある場合、指定された値は使用されません。その場合はAppearance Streamで任意の透明性が指定されます。 Annotationに明示的なAppearance Streamが定義されておらず、プロセッサが外観を再生成できない場合のAnnotationは必ずしもPDFイメージングモデルに準拠しない実装依存の方法で描画されることがある。 この場合はこのエントリの効果も実装依存となる。 |
CA | number | (PDF2.0未満,PDF2.0はnon-markup Annotationで省略可)Annotationの外観ストリームを再生成する際にこの不透明度値は注釈が閉じた状態にあるすべての可視要素のストロークに使用さるが、Annotationを開いたときに表示されるポップアップウィンドウには使用されない。 このディクショナリにこのCAエントリが存在しない場合はエントリの値はストローク以外の操作にも使用されます。 既定値:1.0 AnnotationにAppearance Stream(外観ストリーム)がある場合は指定された値は使用されません。この場合のAppearance Streamは任意の透明性を指定します。 Annotationに明示的なAppearance Streamが定義されておらず、プロセッサが外観を再生成できない場合のAnnotationは必ずしもPDFイメージングモデルに準拠しない実装依存の方法で描画されることがある。この場合にこのエントリの効果は実装依存となる。 |
BM | name | Annotationをページに描画する際に使用するブレンドモード このキーが指定されていない場合のブレンドは通常ブレンドモードを使用して行われる。値は、標準ブレンドモードのいずれかを表す名前オブジェクトである。 |
Lang | text string |
13.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プロパティの変更を制限しません。 |
13.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] |
13.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ストリームを定義します。
13.5 Annotationタイプ
PDFは以下の標準Annotationタイプをサポートします。
各タイプの詳細は、PDF Reference 1.7 「8.4.5 Annotation Types」、または ISO32000-2 「12.5.6 Annotation Types」を参照してください。
13.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の親フィールドへの参照 |