PDFium Delphi Component Docs

Propiedad BookmarkFrom

Componente: TPdf  ·  Unidad: PDFium
Convierte un handle FPDF_BOOKMARK sin procesar en un registro TBookmark completo al leer el título, la página de destino y los metadatos de la acción de ese nodo del esquema

Syntax

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

Description

BookmarkFrom es el puente entre el recorrido de marcadores de bajo nivel de PDFium y el registro de alto nivel TBookmark. Siempre que obtenga un identificador FPDF_BOOKMARK directamente de PDFium (por ejemplo mediante FPDFBookmark_GetFirstChild, FPDFBookmark_GetNextSibling, o como parte de una prueba de acierto de clic en un visor), páselo por este indexador para recibir el texto del título resuelto, el PageNumber de destino, la clase de TPdfAction y cualquier ruta de archivo / URI asociada

El registro devuelto es una instantánea: lee el diccionario del marcador una vez y decodifica el destino en un número de página basado en 1. El identificador también se almacena en el registro, de modo que puede pasarlo de vuelta a las API de PDFium sin otro recorrido del árbol

Este indexador es la forma canónica de implementar un recorrido de esquema personalizado que necesita más control que Bookmarks (que enumera todo en profundidad primero) o BookmarkChildren (que solo devuelve los hijos directos). Mezcle identificadores PDFium sin procesar con la resolución de BookmarkFrom para construir, por ejemplo, una vista de árbol con carga diferida

Parameters

HandleFPDF_BOOKMARK. Un identificador de marcador no nil obtenido de la API C de PDFium o de un campo TBookmark.Handle previo. Pasar nil devuelve un registro relleno con ceros. El identificador permanece válido solo mientras el documento subyacente esté cargado

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