Skip to content

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

MethodFitur
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

php
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');

Bookmark / Outline

php
$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

php
$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.

Buat referensi silang yang bisa diklik antar halaman:

php
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);

Berikan string URL sebagai parameter $link pada cell(), write(), atau image():

php
$pdf->cell(0, 10, 'Kunjungi website kami', link: 'https://example.com', newLine: true)
    ->write(10, 'Klik di sini', link: 'https://docs.example.com');

Named Destination

php
$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

php
$pdf->annotation(float $x, float $y, float $w, float $h, string $text, array $opt = []);

Anotasi muncul sebagai ikon sticky-note di PDF viewer.

php
$pdf->annotation(50, 80, 10, 10, 'Tinjau bagian ini sebelum release.', [
    'subtype' => 'Text',
    'icon'    => 'Comment',
    'color'   => [255, 255, 0],
]);

Lampiran File

php
$pdf->addFileAttachment(string $file, string $name, string $desc);

File yang di-embed muncul di panel lampiran PDF reader.

php
$pdf->addFileAttachment('/reports/q4-data.xlsx', 'q4-data.xlsx', 'Data keuangan Q4')
    ->addFileAttachment('/reports/methodology.pdf', 'methodology.pdf', 'Metodologi penelitian');

Didistribusikan di bawah lisensi LGPL-3.0-or-later.