property Destination[Index: Integer]: TDestination; // read only
Un destino con nombre es un nombre simbólico (por ejemplo "chap5.fig3") almacenado en el catálogo del documento PDF que se resuelve a una tupla concreta de página-posición-zoom. Los esquemas, las anotaciones de enlace y los documentos externos pueden referenciar un destino por su nombre estable en lugar de por coordenadas de página fijas en el código, de modo que el documento se puede repaginar 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 con base cero. Destination[Index] devuelve un registro TDestination con el nombre del destino, el número de página destino (basado en 1), las coordenadas de vista (X, Y), el factor de zoom y banderas booleanas que indican si cada componente fue establecido explícitamente por el autor
Use DestinationCount para obtener el número total de destinos con nombre, itere con Destination[I] y use DestinationByName cuando ya conozca el nombre del destino
| Index | Integer. Posición con base cero en la lista aplanada de destinos con nombre. Debe estar en [0, DestinationCount - 1]. Un índice fuera de rango devuelve un registro lleno de 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 marcados como presentesViewMode distingue los destinos XYZ, Fit, FitH, FitV, FitR, FitB, FitBH y FitBV sin exigir que el llamador decodifique constantes de PDFiumViewParameterCount indica la cantidad de entradas válidas en el arreglo fijo 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;
// Navigate to the first destination
if Pdf1.DestinationCount > 0 then
Pdf1.PageNumber := Pdf1.Destination[0].PageNumber;
end;