property Destination[Index: Integer]: TDestination; // read only
Um named destination (destino nomeado) é um nome simbólico (por exemplo "chap5.fig3") armazenado no catálogo do documento PDF que resolve para uma tupla concreta de página, posição e zoom. Eles permitem que outlines, anotações de link e documentos externos referenciem um alvo por nome estável em vez de coordenadas de página fixas no código, de modo que o documento possa ser repaginado sem quebrar links de entrada
O PDFium Delphi Component achata tanto os dicionários legados /Dests quanto as árvores de nomes modernas /Names /Dests em uma única lista baseada em zero. Destination[Index] retorna um record TDestination que carrega o nome do destino, a página de destino baseada em um, o ViewMode decodificado, os ViewParameters brutos, as coordenadas de exibição, o fator de zoom e os sinalizadores de presença
Use DestinationCount para obter o número total de destinos nomeados, itere com Destination[I] e use DestinationByName quando você já souber o nome do alvo
| Index | Integer. Posição baseada em zero na lista achatada de destinos nomeados. Deve estar em [0, DestinationCount - 1]. Um índice fora do intervalo retorna um record preenchido com zeros com Handle = nil. |
HasX, HasY e HasZoom distinguem destinos "fit page" / "fit width" (nos quais esses componentes estão ausentes) de destinos XYZ explícitos. Aplique apenas os componentes marcados como presentesViewMode distingue destinos XYZ, Fit, FitH, FitV, FitR, FitB, FitBH e FitBV sem exigir que os chamadores decodifiquem constantes do PDFiumViewParameterCount dá o número de entradas válidas no array fixo de quatro 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;