PDFium Delphi Component Docs

BookmarkFrom Egenskap

Component: TPdf  ·  Unit: PDFium
Konverterar ett rått FPDF_BOOKMARK-handtag till en fullständigt ifylld TBookmark-post genom att läsa rubriken, destinationssidan och åtgärdsmetadata för den dispositionsnoden

Syntax

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

Description

BookmarkFrom är bron mellan bokmärkesgenomgång på låg nivå i PDFium och posten TBookmark på hög nivå. Närhelst du erhåller ett FPDF_BOOKMARK-handtag direkt från PDFium (till exempel via FPDFBookmark_GetFirstChild, FPDFBookmark_GetNextSibling eller som en del av en klickträfftest i en visare), skicka det genom denna indexerare för att få den upplösta titeltexten, målets PageNumber, TPdfAction-typen samt eventuell associerad URI / filsökväg

Den returnerade posten är en ögonblicksbild: den läser bokmärkesordboken en gång och avkodar destinationen till ett ettbaserat sidnummer. Själva handtaget lagras också i posten så att du kan skicka tillbaka det till PDFium-API:er utan ännu en trädgenomgång

Denna indexerare är det kanoniska sättet att implementera en anpassad dispositionsgenomgång som kräver mer kontroll än Bookmarks (som räknar upp allt djupet först) eller BookmarkChildren (som enbart returnerar direkta barn). Kombinera råa PDFium-handtag med upplösning via BookmarkFrom för att till exempel bygga ett lat laddat trädvy

Parameters

HandleFPDF_BOOKMARK. Ett bokmärkeshandtag som inte är nil, erhållet från PDFium C-API:et eller från ett tidigare TBookmark.Handle-fält. Att skicka nil returnerar en nollfylld post. Handtaget förblir giltigt endast medan det underliggande dokumentet är inläst

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