Документация PDFiumPas

Destination Свойство

Эта запись API сохраняет идентификаторы, сигнатуры, блоки кода и термины PDF в исходном виде.
Компонент: TPdf  ·  Модуль: PDFium
Возвращает запись TDestination для именованного назначения по указанному индексу с отсчетом от нуля. Именованные назначения — это косвенные цели, определенные под деревом Dests / Names в каталоге документа, как описано в разделе 12.3.2 PDF

Синтаксис

property Destination[Index: Integer]: TDestination; // read only

Описание

Именованное назначение — это символическое имя, например "chap5.fig3", хранимое в каталоге PDF-документа и разрешающееся в конкретную кортежную комбинацию страница-позиция-масштаб. Они позволяют оглавлениям, аннотациям-ссылкам и внешним документам ссылаться на цель по устойчивому имени, а не по жестко заданным координатам страницы, так что документ можно переразбить без поломки входящих ссылок

PDFiumPas сводит и устаревшие словари /Dests, и современные деревья имен /Names /Dests в единый список с нулевой базой. Destination[Index] возвращает запись TDestination, содержащую имя назначения, номер целевой страницы (с отсчетом от 1), координаты просмотра (X, Y), коэффициент масштаба и логические флаги, указывающие, был ли каждый компонент явно задан автором

Используйте DestinationCount, чтобы получить общее число именованных назначений, итерируйтесь с помощью Destination[I] и используйте DestinationByName, когда целевое имя уже известно

Параметры

IndexInteger. Позиция с отсчетом от нуля в сводном списке именованных назначений. Должна быть в [0, DestinationCount - 1]. Индекс вне диапазона возвращает нулевую запись с Handle = nil

Примечания

Пример

var
  I: Integer;
  Dest: TDestination;
begin
  Pdf1.LoadFromFile('manual.pdf');
  Memo1.Lines.Add(Format('%d named destinations:', [Pdf1.DestinationCount]));
  for I := 0 to Pdf1.DestinationCount - 1 do
  begin
    Dest := Pdf1.Destination[I];
    Memo1.Lines.Add(Format('%s -> page %d (X=%.1f Y=%.1f Zoom=%.2f)',
      [Dest.Name, Dest.PageNumber, Dest.X, Dest.Y, Dest.Zoom]));
  end;
  // Navigate to the first destination
  if Pdf1.DestinationCount > 0 then
    Pdf1.PageNumber := Pdf1.Destination[0].PageNumber;
end;

См. также

DestinationCount, DestinationByName, PageNumber, Bookmark, LinkAnnotation