アノテーション種別リファレンス
v2026.07
PDF Manipulator
の addAnnotation() メソッドは、org.jpedal.annotation
パッケージ内のクラスのインスタンスを受け取ります。FreeText と Link については、PDF Manipulatorチュートリアル
に実例付きで解説があります。このページでは、残りのアノテーション種別のコンストラクタと、それらが受け取るフラグ、キャプション、線端スタイル、アイコンの値について説明します。
各アノテーション種別には、詳細度の異なる複数のコンストラクタがあります。以下の例では、各種別について最もシンプルなコンストラクタを使用しています。より詳細なコンストラクタでは、以下の項目も設定できます。
- アノテーションフラグ - 後述のアノテーションフラグ を参照してください。
- 透明度 -
strokingAlpha(線・境界線の透明度)とnonStrokingAlpha(塗りつぶしの透明度)を個別に設定でき、0.0(完全透明)から1.0(完全不透明)の範囲で指定します。 - タイトルバー - アノテーションのポップアップウィンドウに表示される
titleテキスト(主に作成者名として使用されます)。
各種別のコンストラクタの完全な一覧については、Annotation Javadoc を参照してください。
- JavaにおけるPDFアノテーション種別
- アノテーションフラグ
- Caret
- Circle
- Highlight
- Ink
- Line
- PolyLine
- Polygon
- Square
- Squiggly
- Stamp
- StrikeOut
- Text
- Underline
一部のコンストラクタは int flags パラメータを受け取ります。これはPDF仕様に定義されているPDFアノテーションフラグのビットマスクです。ビットマスクを自分で計算する代わりに、静的ヘルパーメソッド Annotation.getFlagsValue() を使って、真偽値からこの値を構築できます。
final int flags = Annotation.getFlagsValue(
false, // invisible - 未知のアノテーション種別を描画せず、Printが設定されていても印刷しない
false, // hidden - アノテーションを一切描画せず、操作も禁止する
true, // print - Hiddenが設定されていない限り、ページ印刷時にアノテーションを印刷する
false, // noZoom - ページのズームレベルに合わせてアノテーションの外観を拡縮しない
false, // noRotate - ページの回転に合わせてアノテーションの外観を回転しない
false, // noView - 画面上での描画と操作を禁止するが、印刷は許可する
false, // readOnly - ユーザーがアノテーションを操作できないようにする
false, // locked - ユーザーがアノテーションを削除・移動・リサイズできないようにする
false, // toggleNoView - マウスホバー中または選択中にNoViewフラグを反転する
false // lockedContents - ユーザーがアノテーションの内容を変更できないようにする
);
フラグを設定する必要がない場合は、
flagsパラメータを省略した短いコンストラクタを使用してください。
テキスト内の特定の位置を示すマークで、テキストが挿入された箇所を示すためによく使われます。
final Caret caret = new Caret(new float[] {X1, Y1, X2, Y2}, new float[] {0.0f, 0.0f, 0.0f});
アノテーションのバウンディングボックス内に内接する楕円です。
final Circle circle = new Circle(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // lineColor
new float[] {1.0f, 1.0f, 0.0f}, // fillColor
1.0f, // strokingAlpha
1.0f, // nonStrokingAlpha
1.0f); // lineWidth
1つ以上のテキスト範囲をハイライト表示します。一般的には、蛍光ペンでマークしたかのようにテキストを強調して表示します。
quadPoints は、デフォルトユーザー空間における n 個の四角形の座標を指定する 8 x n 個の数値の配列です。各四角形は、アノテーションの下にあるテキストの単語または連続した単語のグループを囲みます。各四角形の座標は x1 y1 x2 y2 x3 y3 x4 y4 の順で指定し、四角形の4頂点を反時計回りで表します。
final Highlight highlight = new Highlight(new float[] {X1, Y1, X2, Y2},
new float[] {1.0f, 1.0f, 0.0f}, // color
new float[] {X1, Y1, X2, Y1, X1, Y2, X2, Y2}); // quadPoints
1つ以上の非連続パスで構成されるフリーハンドの「落書き」です。ポインティングデバイスで描いた手書きアノテーションを表現するためによく使われます。
inkList は n 個の配列からなる配列で、各内部配列がストロークパスを表します。各内部配列は、デフォルトユーザー空間においてパス上の点を指定する、水平・垂直座標を交互に並べた数値の列です。
final Ink ink = new Ink(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // color
new float[][] , // inkList, 3点を持つ1つのパス
1.0f); // lineWidth
単一の直線です。オプションでキャプションや異なるスタイルの線端を設定できます。
line は4つの数値の配列 [x1 y1 x2 y2] で、デフォルトユーザー空間における直線の始点と終点の座標を指定します。
final Line line = new Line(new float[] {X1, Y1, X2, Y2},
"A caption", // contents(またはnull)
new float[] {0.0f, 0.0f, 0.0f}, // color
new float[] {X1, Y1, X2, Y2}); // line
Line には、LineEndingStyle
および CaptionPosition
列挙型を使って、直線の始点・終点それぞれに異なる線端スタイルとキャプションの位置を設定できるコンストラクタもあります。
final Line arrowLine = new Line(new float[] {X1, Y1, X2, Y2},
"A caption", // contents(またはnull)
new float[] {0.0f, 0.0f, 0.0f}, // color
new float[] {X1, Y1, X2, Y2}, // line
LineEndingStyle.NONE, // startStyle
LineEndingStyle.OPEN_ARROW, // endStyle
new float[] {0.0f, 0.0f, 0.0f}, // endingColor
CaptionPosition.TOP); // captionPosition
LineEndingStyle に指定できる値は以下のとおりです。
| 値 | 説明 |
|---|---|
SQUARE | 正方形の線端。 |
CIRCLE | 円形の線端。 |
DIAMOND | ひし形の線端。 |
OPEN_ARROW | 開いた矢印の線端。 |
CLOSED_ARROW | 閉じた(塗りつぶされた)矢印の線端。 |
NONE | 線端なし。 |
BUTT | 線の端にフラットなキャップを付ける(「バットキャップ」とも呼ばれる)。 |
REVERSE_OPEN_ARROW | 反転した開き矢印の線端(矢印が線の始点方向を向く)。 |
REVERSE_CLOSED_ARROW | 反転した閉じた(塗りつぶされた)矢印の線端。 |
SLASH | 線の端にスラッシュに似た短い斜線を付ける。 |
CaptionPosition に指定できる値は以下のとおりです。
| 値 | 説明 |
|---|---|
INLINE | キャプションを直線の内側中央に配置する。 |
TOP | キャプションを直線の上に配置する。 |
最も詳細な Line コンストラクタでは、leaderLength(各端点から延びるリーダー線の長さ)と leaderExtensionLength(リーダー線から180度方向に延びるリーダー線延長部の長さ。0以上の値)も設定できます。
連続した直線セグメントの系列です。Polygon と異なり、最初と最後の頂点は結ばれません。
vertices は各頂点の水平・垂直座標を交互に並べた数値の配列です。
final PolyLine polyLine = new PolyLine(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // lineColor
new float[] {1.0f, 1.0f, 0.0f}, // fillColor
new float[] {X1, Y1, X2, Y2, X3, Y3}, // vertices
1.0f); // lineWidth
PolyLine には、上述の LineEndingStyle
列挙型を使って、直線の始点・終点それぞれに異なる線端スタイルを設定できるコンストラクタもあります。
final PolyLine arrowPolyLine = new PolyLine(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // lineColor
new float[] {1.0f, 1.0f, 0.0f}, // fillColor
new float[] {X1, Y1, X2, Y2, X3, Y3}, // vertices
LineEndingStyle.NONE, // startStyle
LineEndingStyle.OPEN_ARROW, // endStyle
1.0f); // lineWidth
閉じた図形を形成する連続した直線セグメントの系列です。
vertices は各頂点の水平・垂直座標を交互に並べた数値の配列です。
final Polygon polygon = new Polygon(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // lineColor
new float[] {1.0f, 1.0f, 0.0f}, // fillColor
new float[] {X1, Y1, X2, Y2, X3, Y3}, // vertices
1.0f); // lineWidth
アノテーションのバウンディングボックス内に内接する長方形です。
final Square square = new Square(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 0.0f}, // lineColor
new float[] {1.0f, 1.0f, 0.0f}, // fillColor
1.0f, // strokingAlpha
1.0f, // nonStrokingAlpha
1.0f); // lineWidth
1つ以上のテキスト範囲の下に表示される波線の下線です。
quadPoints の形式は、上述の Highlight
と同じです。
final Squiggly squiggly = new Squiggly(new float[] {X1, Y1, X2, Y2},
new float[] {1.0f, 0.0f, 0.0f}, // color
new float[] {X1, Y1, X2, Y1, X1, Y2, X2, Y2}); // quadPoints
名前付きのゴム印アイコンを表示します。カスタムアピアランスストリームを設定することで、画像やテキストを表示することもできます(アノテーションの追加 を参照)。
icon には AnnotationIcons
の値のいずれかを指定する必要があります。
final Stamp stamp = new Stamp(new float[] {X1, Y1, X2, Y2},
new float[] {1.0f, 0.0f, 0.0f}, // color
AnnotationIcons.APPROVED); // icon
AnnotationIcons が提供するゴム印アイコン名は次のとおりです: APPROVED、EXPERIMENTAL、NOT_APPROVED、AS_IS、EXPIRED、NOT_FOR_PUBLIC_RELEASE、CONFIDENTIAL、FINAL、SOLD、DEPARTMENTAL、FOR_COMMENT、TOP_SECRET、DRAFT、FOR_PUBLIC_RELEASE。
また AnnotationIcons は、Text
付箋アイコン用の名前(COMMENT、KEY、NOTE、HELP、NEW_PARAGRAPH、PARAGRAPH、INSERT)、ファイルの添付
で使用するファイル添付アイコン用の名前(GRAPH、PAPER_CLIP、PUSH_PIN、TAG)、および現在 addAnnotation() が受け付けるアノテーション種別には含まれないSoundアノテーション種別に対応した「サウンドアイコン」ペア(SPEAKER、MIC)も提供しています。
1つ以上のテキスト範囲に取り消し線を引きます。
quadPoints の形式は、上述の Highlight
と同じです。
final StrikeOut strikeOut = new StrikeOut(new float[] {X1, Y1, X2, Y2},
new float[] {1.0f, 0.0f, 0.0f}, // color
new float[] {X1, Y1, X2, Y1, X1, Y2, X2, Y2}); // quadPoints
クリックするとテキストを含むポップアップウィンドウが表示される「付箋」アイコンです。
icon には、AnnotationIcons
の付箋アイコン用の値のいずれかを指定する必要があります。使用できる値は上述の Stamp
に記載されています。
final Text text = new Text(new float[] {X1, Y1, X2, Y2},
"Some notes", // contents(またはnull)
new float[] {1.0f, 1.0f, 0.0f}, // color
AnnotationIcons.COMMENT); // icon
open(ポップアップウィンドウを最初から開いた状態で表示するかどうか)を設定できるコンストラクタもあります。
final Text openText = new Text(new float[] {X1, Y1, X2, Y2},
"Some notes", // contents(またはnull)
new float[] {1.0f, 1.0f, 0.0f}, // color
true, // open
AnnotationIcons.COMMENT); // icon
1つ以上のテキスト範囲の下に表示される下線です。
quadPoints の形式は、上述の Highlight
と同じです。
final Underline underline = new Underline(new float[] {X1, Y1, X2, Y2},
new float[] {0.0f, 0.0f, 1.0f}, // color
new float[] {X1, Y1, X2, Y1, X1, Y2, X2, Y2}); // quadPoints
