property Destination[Index: Integer]: TDestination; // read only
Una destinazione con nome è un nome simbolico (ad esempio "chap5.fig3") memorizzato nel catalogo del documento PDF che si risolve in una tupla concreta pagina-posizione-zoom. Consentono a segnalibri, annotazioni di collegamento e documenti esterni di fare riferimento a una destinazione tramite un nome stabile invece che tramite coordinate di pagina cablate, così il documento può essere rinumerato senza rompere i collegamenti in ingresso
PDFium Delphi Component appiattisce sia i dizionari /Dests legacy sia i name tree moderni /Names /Dests in un'unica lista a base zero. Destination[Index] restituisce un record TDestination che contiene il nome della destinazione, la pagina di destinazione a base uno, il ViewMode decodificato, i ViewParameters grezzi, le coordinate della vista, il fattore di zoom e i flag di presenza
Usare DestinationCount per ottenere il numero totale di destinazioni con nome, iterare con Destination[I] e usare DestinationByName quando si conosce già il nome della destinazione
| Index | Integer. Posizione a base zero nella lista appiattita delle destinazioni con nome. Deve essere in [0, DestinationCount - 1]. Un indice fuori intervallo restituisce un record azzerato con Handle = nil |
HasX, HasY e HasZoom distinguono le destinazioni "adatta pagina" / "adatta larghezza" (in cui queste componenti sono assenti) dalle destinazioni XYZ esplicite. Applicare solo le componenti marcate come presentiViewMode distingue le destinazioni XYZ, Fit, FitH, FitV, FitR, FitB, FitBH e FitBV senza richiedere ai chiamanti di decodificare le costanti di PDFiumViewParameterCount indica il numero di voci valide nell'array fisso a quattro elementi ViewParametersHandle prima di navigare
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;