PDFium Delphi Component Docs

BookmarkFrom 속성

컴포넌트: TPdf  ·  유닛: PDFium
raw FPDF_BOOKMARK handle을 title, destination page, action metadata를 읽어 완전히 채워진 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 / 파일 경로를 받으세요

반환 레코드는 스냅샷입니다. 북마크 딕셔너리를 한 번 읽고 destination을 1 기반 페이지 번호로 디코딩합니다. 핸들 자체도 레코드에 담기므로 트리를 다시 훑지 않고도 PDFium API에 그대로 넘길 수 있습니다

Bookmarks(전부 깊이 우선으로 나열)나 BookmarkChildren(직계 자식만 반환)보다 세밀한 제어가 필요한 커스텀 아웃라인 순회를 만들 때 이 인덱서가 정석적인 방법입니다. 원본 PDFium 핸들과 BookmarkFrom 해석을 섞어 쓰면 예컨대 지연 로딩 트리 뷰를 만들 수 있습니다

Parameters

HandleFPDF_BOOKMARK. PDFium C API나 이전 TBookmark.Handle 필드에서 얻은 nil이 아닌 북마크 핸들입니다. nil을 넘기면 0으로 채워진 레코드를 반환합니다. 핸들은 기반 문서가 로드되어 있는 동안에만 유효합니다

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