PDFium Delphi Component Docs

BookmarkFrom Propriété

Composant: TPdf  ·  Unit: PDFium
Convertit un handle brut FPDF_BOOKMARK en un enregistrement TBookmark entièrement renseigné en lisant le titre, la page de destination et les métadonnées d’action de ce nœud du plan

Syntax

property BookmarkFrom[Handle: FPDF_BOOKMARK]: TBookmark; // read only

Description

BookmarkFrom est le pont entre la traversée de signets PDFium de bas niveau et l’enregistrement TBookmark de haut niveau. Chaque fois que vous obtenez un handle FPDF_BOOKMARK directement depuis PDFium (par exemple via FPDFBookmark_GetFirstChild, FPDFBookmark_GetNextSibling, ou dans le cadre d’un test de clic dans une visionneuse), transmettez-le à cet indexeur pour recevoir le texte de titre résolu, la PageNumber cible, le type TPdfAction et tout chemin URI / fichier associé

L’enregistrement renvoyé est un instantané: il lit une seule fois le dictionnaire du signet et décode la destination en numéro de page commençant à 1. Le handle lui-même est également stocké dans l’enregistrement afin que vous puissiez le renvoyer aux API PDFium sans parcourir à nouveau l’arbre

Cet indexeur est le moyen canonique d’implémenter une traversée de plan personnalisée qui a besoin de plus de contrôle que Bookmarks (qui énumère tout en profondeur d’abord) ou BookmarkChildren (qui ne renvoie que les enfants directs). Mélangez les handles PDFium bruts avec la résolution BookmarkFrom pour construire, par exemple, une vue arborescente à chargement paresseux

Parameters

HandleFPDF_BOOKMARK. Un handle de signet non nul obtenu depuis l’API C PDFium ou depuis un champ TBookmark.Handle antérieur. Passer nil renvoie un enregistrement rempli de zéros. Le handle ne reste valide que pendant que le document sous-jacent est chargé

Remarks

Example

procedure TForm1.DumpOutline(const Bm: TBookmark; Depth: Integer);
var
  Child: FPDF_BOOKMARK;
  Sub: TBookmark;
begin
  Memo1.Lines.Add(StringOfChar(' ', Depth * 2) + Bm.Title +
    Format(' -> page %d', [Bm.ActionPageNumber]));
  Child := FPDFBookmark_GetFirstChild(Pdf1.Document, Bm.Handle);
  while Child <> nil do
  begin
    Sub := Pdf1.BookmarkFrom[Child];
    DumpOutline(Sub, Depth + 1);
    Child := FPDFBookmark_GetNextSibling(Pdf1.Document, Child);
  end;
end;

See Also

Bookmark, Bookmarks, BookmarkChildren, HasBookmarkChildren