PDFium Component Docs

BookmarkFrom Właściwość

Component: TPdf  ·  Unit: PDFium
Konwertuje surowy uchwyt FPDF_BOOKMARK na w pełni wypełniony rekord TBookmark, odczytując tytuł, stronę docelową i metadane akcji dla tego węzła konspektu

Syntax

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

Description

BookmarkFrom jest pomostem między niskopoziomowym przechodzeniem zakładek PDFium a wysokopoziomowym rekordem TBookmark. Za każdym razem, gdy uzyskasz uchwyt FPDF_BOOKMARK bezpośrednio z PDFium (na przykład przez FPDFBookmark_GetFirstChild, FPDFBookmark_GetNextSibling lub w ramach testu trafienia kliknięcia w przeglądarce), przekaż go przez ten indeksator, aby otrzymać rozstrzygnięty tekst tytułu, docelowy PageNumber, rodzaj TPdfAction oraz skojarzony URI / ścieżkę pliku

Zwrócony rekord jest migawką: odczytuje słownik zakładki raz i dekoduje miejsce docelowe na numer strony liczony od jedzynki. Sam uchwyt również jest przechowywany w rekordzie, więc można przekazać go z powrotem do API PDFium bez kolejnego przechodzenia drzewa

Ten indeksator to kanoniczny sposób implementacji niestandardowego przechodzenia konspektu, które wymaga większej kontroli niż Bookmarks (wyliczające wszystko w głąb) czy BookmarkChildren (zwracające tylko bezpośrednie elementy potomne). Łącz surowe uchwyty PDFium z rozstrzyganiem BookmarkFrom, aby zbudować na przykład drzewo z leniwym ładowaniem

Parameters

HandleFPDF_BOOKMARK. Niepusty uchwyt zakładki uzyskany z API C PDFium lub z poprzedniego pola TBookmark.Handle. Przekazanie nil zwraca rekord wypełniony zerami. Uchwyt pozostaje ważny tylko wtedy, gdy dokument bazowy jest wczytany

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