跳轉到

書籤(文件大綱)

PDF 書籤(又稱文件大綱、Outline)是側邊欄的導航樹狀結構,讓讀者快速跳轉到文件各章節。BookmarkManager 提供流暢的 API 建立任意深度的書籤樹。

建立書籤

use NextPDF\Navigation\BookmarkManager;
use NextPDF\Navigation\Bookmark;

$bookmarks = $document->bookmarks();

// 頂層書籤(指向頁碼)
$ch1 = $bookmarks->add(
    title: 'Chapter 1: Introduction',
    destination: Destination::page(pageNumber: 1),
);

$ch2 = $bookmarks->add(
    title: 'Chapter 2: Architecture',
    destination: Destination::page(pageNumber: 5),
);

// 巢狀子書籤
$ch2->addChild(
    title: '2.1 System Overview',
    destination: Destination::page(pageNumber: 5),
);

$ch2->addChild(
    title: '2.2 Component Design',
    destination: Destination::page(pageNumber: 8),
);

導航目標(Destination)

use NextPDF\Navigation\Destination;

// 跳至指定頁面(頂部)
Destination::page(pageNumber: 3);

// 跳至頁面的特定 XYZ 座標(縮放至 150%)
Destination::xyz(
    pageNumber: 3,
    x: 20.0,
    y: 250.0,
    zoom: 1.5,
);

// 適合頁面寬度
Destination::fitWidth(pageNumber: 3, y: 200.0);

// 適合頁面
Destination::fit(pageNumber: 3);

// 具名目標(Named Destination)
Destination::named(name: 'section-2-1');

書籤樣式

// 粗體、斜體書籤(用於強調重要章節)
$bookmarks->add(
    title: 'Appendix A',
    destination: Destination::page(pageNumber: 45),
    bold: true,
    italic: false,
    color: Color::rgb(r: 30, g: 58, b: 138),
);

展開與折疊狀態

// 預設展開(顯示子書籤)
$ch1->setExpanded(true);

// 預設折疊(子書籤隱藏)
$ch2->setExpanded(false);

從目錄自動生成書籤

// 與 TocBuilder 聯動,從目錄條目自動生成書籤
$toc = $document->toc();
$toc->autoGenerateBookmarks(true);

參見

  • 目錄 — TocBuilder 與書籤聯動
  • 連結 — 超連結與書籤的差異
  • PDF 合併 — 合併時的書籤處理