property Destination[Index: Integer]: TDestination;// solo lectura
Un destino con nombre es un nombre simbólico (por ejemplo "chap5.fig3") almacenado en el catálogo del documento PDF que se resuelve en una tupla concreta de página-posición-zoom. Permiten que los esquemas, las anotaciones de enlace y los documentos externos hagan referencia a un destino por un nombre estable en lugar de por coordenadas de página fijas, de modo que el documento pueda volver a paginarse sin romper los enlaces entrantes
PDFium Delphi Component aplana tanto los diccionarios heredados /Dests como los árboles de nombres modernos /Names /Dests en una única lista basada en cero. Destination[Index] devuelve un registro TDestination que lleva el nombre del destino, la página de destino basada en uno, el ViewMode decodificado, los ViewParameters sin procesar, las coordenadas de vista, el factor de zoom y las marcas de presencia
Use DestinationCount para obtener el número total de destinos con nombre, itere con Destination[I] y use DestinationByName cuando ya conozca el nombre de destino
| Index | Integer. Posición basada en cero en la lista aplanada de destinos con nombre. Debe estar en [0, DestinationCount - 1]. Un índice fuera de rango devuelve un registro rellenado con ceros con Handle = nil |
HasX, HasY y HasZoom distinguen los destinos "ajustar página" / "ajustar ancho" (donde estos componentes están ausentes) de los destinos XYZ explícitos. Aplique solo los componentes que estén marcados como presentesViewMode distingue los destinos XYZ, Fit, FitH, FitV, FitR, FitB, FitBH y FitBV sin requerir que los llamadores decodifiquen las constantes de PDFiumViewParameterCount proporciona el número de entradas válidas en la matriz fija de cuatro elementos ViewParametersHandle antes de navegar
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;
// Navegar al primer destino
if Pdf1.DestinationCount > 0 then
Pdf1.PageNumber := Pdf1.Destination[0].PageNumber;
end;