PDFium Delphi Component 文件

BookmarkFrom 屬性

元件: TPdf  ·  單元: PDFium
將原始 FPDF_BOOKMARK 控制代碼轉換成完整填入內容的 TBookmark record,並讀取該大綱節點的標題、目的頁面與動作中繼資料

Syntax

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

Description

BookmarkFrom 是低階 PDFium 書籤走訪與高階 TBookmark 記錄之間的橋樑。每當您直接從 PDFium 取得 FPDF_BOOKMARK 控制代碼(例如透過 FPDFBookmark_GetFirstChild、FPDFBookmark_GetNextSibling,或作為檢視器中點選命中測試的一部分),只要將它傳給此索引子,即可取得已解析的標題文字、目標 PageNumber、TPdfAction 類型,以及任何關聯的 URI / 檔案路徑

傳回的記錄是快照:它會讀取書籤字典一次,並將目的地解碼為以 1 為基底的頁碼。控制代碼本身也會儲存在記錄上,讓您不必再次走訪樹就能將它傳回 PDFium API

此索引子是實作自訂大綱走訪的標準方式,適用於需要比 Bookmarks(深度優先列舉所有項目)或 BookmarkChildren(只傳回直接子項)更多控制力的場景。將原始 PDFium 控制代碼與 BookmarkFrom 解析混合使用,即可建構例如延遲載入的樹狀檢視

Parameters

HandleFPDF_BOOKMARK。從 PDFium C API 或先前 TBookmark.Handle 欄位取得的非 nil 書籤控制代碼。傳入 nil 會傳回全零記錄。該控制代碼僅在底層文件載入期間保持有效

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