Navigasi (HasNavigation)
Trait HasNavigation dan modul yang mendasarinya (BookmarkManager, TocManager, AnnotationManager, FileAttachment) menyediakan fitur navigasi PDF: bookmark hierarkis, daftar isi yang dihasilkan otomatis, link internal dan eksternal, named destination, anotasi, dan lampiran file yang di-embed. Semua method mengembalikan static, sehingga setiap panggilan bisa di-chain.
Referensi Cepat
| Method | Fitur |
|---|---|
bookmark() | Tambah bookmark / entry outline hierarkis |
addTOC() | Hasilkan daftar isi otomatis dengan dot leader |
addHTMLTOC() | Daftar isi bergaya HTML |
addLink() | Buat destinasi link internal (mengembalikan ID link) |
setLink() | Set posisi target link internal |
setDestination() | Buat anchor named destination |
annotation() | Tambah anotasi teks |
addFileAttachment() | Embed lampiran file dalam PDF |
Contoh Dasar
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
// Bookmark
->bookmark('Bab 1', 0)
->cell(0, 10, 'Bab 1: Pendahuluan', newLine: true)
->bookmark('Bagian 1.1', 1)
->cell(0, 10, '1.1 Memulai', newLine: true)
// Link internal
->addPage()
->bookmark('Bab 2', 0)
->cell(0, 10, 'Bab 2: Topik Lanjutan', newLine: true)
// Lampiran file
->addFileAttachment('/path/to/data.xlsx', 'data.xlsx', 'Data pendukung')
// Hasilkan TOC otomatis di akhir (sisipkan di halaman 1)
->addTOC(1, ' . ', 'Daftar Isi');2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Bookmark / Outline
$pdf->bookmark(string $txt, int $level = 0, float $y = -1, int $page = -1, string $style = '', array $color = []);Bookmark muncul di panel outline PDF reader. Sarangkan dengan menaikkan $level.
Daftar Isi
$pdf->addTOC(int $page, string $numberSuffix = '', string $bookmarkText = '');Panggil addTOC() setelah semua bookmark telah ditambahkan. TOC dibangun dari tree bookmark dan disisipkan pada posisi halaman yang ditentukan. Gunakan addHTMLTOC() untuk kontrol penuh atas styling entry melalui HTML dan CSS.
Link Internal
Buat referensi silang yang bisa diklik antar halaman:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12);
$linkId = $pdf->addLink();
$pdf->write(10, 'Loncat ke Bab 2', link: $linkId)
->addPage()
->setLink($linkId, y: 0)
->cell(0, 10, 'Bab 2 dimulai di sini', newLine: true);2
3
4
5
6
7
8
9
10
11
12
Link Eksternal
Berikan string URL sebagai parameter $link pada cell(), write(), atau image():
$pdf->cell(0, 10, 'Kunjungi website kami', link: 'https://example.com', newLine: true)
->write(10, 'Klik di sini', link: 'https://docs.example.com');2
Named Destination
$pdf->setDestination(string $name, float $y = -1, int $page = -1);Named destination memungkinkan dokumen eksternal atau URL untuk link ke lokasi tertentu melalui fragment #name.
Anotasi
$pdf->annotation(float $x, float $y, float $w, float $h, string $text, array $opt = []);Anotasi muncul sebagai ikon sticky-note di PDF viewer.
$pdf->annotation(50, 80, 10, 10, 'Tinjau bagian ini sebelum release.', [
'subtype' => 'Text',
'icon' => 'Comment',
'color' => [255, 255, 0],
]);2
3
4
5
Lampiran File
$pdf->addFileAttachment(string $file, string $name, string $desc);File yang di-embed muncul di panel lampiran PDF reader.
$pdf->addFileAttachment('/reports/q4-data.xlsx', 'q4-data.xlsx', 'Data keuangan Q4')
->addFileAttachment('/reports/methodology.pdf', 'methodology.pdf', 'Metodologi penelitian');2