property Bookmark[const Title: WString]: TBookmark; // read only
PDF の outline(Acrobat などのビューアーでは document outline または「ブックマーク」と呼ばれます)は、ユーザーがサイドパネルから移動する名前付き entry の階層ツリーです。各 entry は title、省略可能な destination または action、0 個以上の子を持ちます。PDFium Delphi Component はこのツリーを TBookmark レコードの並びへフラット化し、基底の FPDF_BOOKMARK ハンドルに加えて解決済みの title、ターゲットページ番号、action タイプ、action ターゲットを持たせます
文字列インデックス付きの Bookmark は、outline ツリー全体(深さ優先)を大文字小文字を区別して検索し、最初に一致したノードを返します。その title の entry が存在しない場合、返されるレコードは Handle = nil、PageNumber = 0 になります。移動前に Handle を確認してください
ドキュメント順で全ノードを列挙するには Bookmarks、1 階層だけ辿るには BookmarkChildren、生のハンドル(ビューアー側のクリックイベントなど)を値の入ったレコードへ戻すには BookmarkFrom を使います
| Title | WString。一致させる bookmark の完全な title。比較は大文字小文字を区別する完全一致で、部分一致やワイルドカードは行いません。title 内の空白や記号は PDF outline に格納されたとおり正確に再現する必要があります |
Action フィールドは、bookmark が有効化されたときの挙動を示します。acGoto はドキュメント内の ActionPageNumber へジャンプ、acGotoRemote は別の PDF ファイルをターゲットに、acUri は URL を開き、acLaunch は外部ファイルを実行し、acUnsupported は PDFium が destination を解釈できなかったことを意味します0 として報告されます
var
Bm: TBookmark;
begin
Pdf1.LoadFromFile('specification.pdf');
Bm := Pdf1.Bookmark['Chapter 5: Annotations'];
if Bm.Handle <> nil then
begin
case Bm.Action of
acGoto: Pdf1.PageNumber := Bm.ActionPageNumber;
acUri: ShowMessage('URL bookmark');
acGotoRemote: ShowMessage('External PDF target');
end;
end
else
ShowMessage('No bookmark with that title.');
end;