PDFium Component Docs

BookmarkFrom eigenschap

Component: TPdf  ·  Unit: PDFium
Zet een ruwe FPDF_BOOKMARK-handle om in een volledig gevuld TBookmark-record door de titel, de bestemmingspagina en de actiemetadata voor dat outline-knooppunt te lezen

Syntax

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

Description

BookmarkFrom is de brug tussen bladwijjer-doorkruzing op laag niveau van PDFium en het TBookmark-record op hoog niveau. Telkens wanneer u direct een FPDF_BOOKMARK-handle uit PDFium verkrijgt (bijvoorbeeld via FPDFBookmark_GetFirstChild, FPDFBookmark_GetNextSibling, of als onderdeel van een klik-hit-test in een viewer), geeft u deze door aan deze indexer om de opgeloste titeltekst, het doel-PageNumber, het TPdfAction-type en eventuele bijbehorende URI / bestandspad te ontvangen.

Het teruggegeven record is een momentopname: het leest het bladwijzerwoordenboek eenmaal en decodeert de bestemming naar een op 1 gebaseerd paginanummer. De handle zelf wordt ook op het record opgeslagen, zodat u deze terug kunt doorgeven aan PDFium-API's zonder nog een boomwandeling.

Deze indexer is de canonieke manier om een aangepaste outline-doorkruising te implementeren die meer controle nodig heeft dan Bookmarks (dat alles diepte-eerst opsomt) of BookmarkChildren (dat alleen directe onderliggende items teruggeeft). Meng ruwe PDFium-handles met BookmarkFrom-resolutie om bijvoorbeeld een lazy-load-boomweergave te bouwen.

Parameters

HandleFPDF_BOOKMARK. Een non-nil bladwijzerhandle verkregen via de PDFium C-API of vanuit een eerder TBookmark.Handle-veld. Het doorgeven van nil geeft een met nullen gevuld record terug. De handle blijft alleen geldig zolang het onderliggende document is geladen.

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