property Destination[Index: Integer]: TDestination; // read only
名前付き宛先 とは、PDF ドキュメントカタログに保存され、具体的なページ・位置・ズームのタプルに解決されるシンボル名(例:"chap5.fig3")です。名前付き宛先を使うと、しおり、リンク注釈、外部ドキュメントが、ハードコードされたページ座標ではなく安定した名前でターゲットを参照できるため、入力リンクを壊さずにドキュメントを再ページングできます
PDFium Delphi Component は、旧式の /Dests 辞書と現行の /Names /Dests 名前ツリーの両方を、1 つの 0 始まりのリストに平坦化します。Destination[Index] は、宛先名、1 始まりのターゲットページ、デコード済みの ViewMode、生の ViewParameters、ビュー座標、ズーム倍率、存在フラグを保持する TDestination レコードを返します
名前付き宛先の総数は DestinationCount で取得し、Destination[I] で列挙します。ターゲット名が既に分かっている場合は DestinationByName を使用します
| Index | Integer. 平坦化された名前付き宛先リスト内の 0 始まりの位置。[0, DestinationCount - 1] の範囲内でなければなりません。範囲外のインデックスを指定すると、Handle = nil のゼロ初期化レコードが返されます |
HasX、HasY、HasZoom は、「ページに合わせる」や「幅に合わせる」の宛先(これらの要素が存在しないもの)を、明示的な XYZ 宛先と区別します。存在するとマークされた要素だけを適用してくださいViewMode は、XYZ、Fit、FitH、FitV、FitR、FitB、FitBH、FitBV の各宛先を、呼び出し側が PDFium 定数をデコードしなくても区別できるようにしますViewParameterCount は、固定 4 要素の ViewParameters 配列における有効なエントリ数を示しますHandle を確認してください
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;