property Destination[Index: Integer]: TDestination; // read only
Nazwany cel to symboliczna nazwa (na przykład "chap5.fig3") zapisana w katalogu dokumentu PDF, która rozwija się do konkretnej krotki pozycja strony / zoom. Pozwala ona konspektom, adnotacjom odsyłaczy i dokumentom zewnętrznym wskazywać cel stabilną nazwą zamiast twardo wpisanych współrzędnych strony, dzięki czemu dokument można ponownie składać bez psucia linków przychodzących
PDFiumPas spłaszcza zarówno starsze słowniki /Dests, jak i nowoczesne drzewa nazw /Names /Dests do jednej listy z indeksami od zera. Destination[Index] zwraca rekord TDestination zawierający nazwę celu, numer strony docelowej (liczony od 1), współrzędne widoku (X, Y), współczynnik powiększenia oraz znaczniki logiczne wskazujące, czy każdy składnik został jawnie ustawiony przez autora
Użyj DestinationCount, aby uzyskać łączną liczbę nazwanych celów, iteruj przy użyciu Destination[I], a DestinationByName stosuj wtedy, gdy znasz już nazwę celu
| 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 i HasZoom odróżniają cele „dopasuj stronę” / „dopasuj szerokość” (gdzie te składniki są nieobecne) od jawnych celów XYZ. Stosuj tylko te składniki, które są oznaczone jako obecneHandle przed nawigacją
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;