property Destination[Index: Integer]: TDestination; // read only
A named destination is a symbolic name (for example "chap5.fig3") im PDF-Dokumentkatalog, das sich in ein konkretes Seiten-Positions-Zoom-Tupel auflöst. Damit können Gliederungen, Link-Anmerkungen und externe Dokumente ein Ziel über einen stabilen Namen statt über fest kodierte Seitenkoordinaten referenzieren, sodass das Dokument ohne defekte eingehende Links neu umbrochen werden kann
PDFiumPas flattens both legacy /Dests dictionaries and modern /Names /Dests name trees into a single zero-based list. Destination[Index] returns a TDestination record carrying the destination name, target page number (1-based), view coordinates (X, Y), zoom factor, and Boolean flags indicating whether each component was explicitly set by the author.
Use DestinationCount to obtain the total number of named destinations, iterate with Destination[I], and use DestinationByName when you already know the target name.
| Index | Integer. Zero-based position in the flattened named-destinations list. Must be in [0, DestinationCount - 1]. An out-of-range index returns a zero-filled record with Handle = nil. |
HasX, HasY, and HasZoom unterscheiden Sie "Fit-Page"- / "Fit-Width"-Ziele (bei denen diese Komponenten fehlen) von expliziten XYZ-Zielen. Wenden Sie nur die Komponenten an, die als vorhanden markiert sindHandle before navigating.
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;