property Bookmark[const Title: WString]: TBookmark; // read only
Очертания PDF (outline — в ридерах вроде Acrobat их называют "закладками") — это иерархическое дерево именованных записей, по которому пользователь ходит из боковой панели. У каждой записи есть заголовок, опциональное назначение или действие и ноль или более детей. PDFium Delphi Component выравнивает это дерево в последовательность записей TBookmark, сохраняющих исходный дескриптор FPDF_BOOKMARK плюс заранее разрешённые заголовок, номер целевой страницы, тип действия и цель действия
Форма с индексом-строкой Bookmark выполняет поиск с учётом регистра по всему дереву outline (в глубину) и возвращает первый совпавший узел. Если записи с таким заголовком нет, у возвращённой записи Handle = nil и PageNumber = 0 — перед переходом проверяйте Handle
Используйте Bookmarks, чтобы перечислить все узлы в порядке документа, BookmarkChildren — для обхода одного уровня вложенности, а BookmarkFrom — чтобы превратить сырой дескриптор (например, из события клика на стороне просмотрщика) обратно в заполненную запись
| Title | WString. Полный заголовок закладки для сопоставления. Сравнение чувствительно к регистру и точное (без поиска подстрокой и wildcards). Пробелы и пунктуация в заголовке должны воспроизводиться в точности так, как они сохранены в outline PDF |
Action возвращённой записи говорит, как ведёт себя закладка при активации — acGoto прыгает на ActionPageNumber внутри документа, acGotoRemote указывает на другой PDF-файл, acUri открывает URL, acLaunch запускает внешний файл, а acUnsupported значит, что PDFium не смог разобрать назначение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;