property Destination[Index: Integer]: TDestination; // read only
命名目标(named destination)是存储在 PDF 文档目录中的符号名称(例如 "chap5.fig3"),它解析为具体的页面-位置-缩放三元组。命名目标让书签轮廓、链接注释和外部文档可以通过稳定名称而非硬编码的页面坐标引用目标,因此文档可以重新分页而不会破坏入站链接
PDFium Delphi Component 将旧式 /Dests 字典和现代 /Names /Dests 名称树统一展平为一个从零开始的列表。Destination[Index] 返回一个 TDestination 记录,携带目标名称、从 1 开始的目标页码、解码后的 ViewMode、原始 ViewParameters、视图坐标、缩放因子以及存在标志
使用 DestinationCount 获取命名目标总数,用 Destination[I] 进行迭代,在已知目标名称时使用 DestinationByName
| Index | Integer。在展平后的命名目标列表中从零开始的位置。必须在 [0, DestinationCount - 1] 范围内。超出范围的索引返回一个填充零值的记录,其 Handle = nil |
HasX、HasY 和 HasZoom 用于区分“适合页面”/“适合宽度”目标(这些分量不存在)与显式 XYZ 目标。只应用标记为存在的分量ViewMode 区分 XYZ、Fit、FitH、FitV、FitR、FitB、FitBH 和 FitBV 目标,调用方无需自行解码 PDFium 常量ViewParameterCount 给出固定的四元素 ViewParameters 数组中有效条目的数量Handle
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;
// 导航到第一个目标
if Pdf1.DestinationCount > 0 then
Pdf1.PageNumber := Pdf1.Destination[0].PageNumber;
end;