Layout (HasLayout)
Trait HasLayout dan modul Layout menyediakan struktur level halaman: header, footer, layout multi-kolom, dan mode booklet. Modul ini terdiri dari PageManager, ColumnManager, BookletManager, dan HeaderFooterManager.
Semua method mengembalikan static, sehingga setiap panggilan bisa di-chain.
Header dan Footer
Header Built-in
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setHeaderData('logo.png', 30, 'Nama Perusahaan', 'Laporan yang dihasilkan — Rahasia')
->setHeaderMargin(10)
->setFooterMargin(10)
->addPage();setHeaderData() menerima path logo, lebar logo, string judul, dan string deskripsi.
Callback Kustom
Untuk kontrol penuh, daftarkan callback yang menerima instance Document:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
$pdf->setHeaderCallback(function (Document $doc) {
$doc->setFont('Helvetica', 'B', 12)
->cell(0, 10, 'Perusahaan Saya — Rahasia', align: 'C', newLine: true)
->line(10, 18, 200, 18);
});
$pdf->setFooterCallback(function (Document $doc) {
$doc->setY(-15)
->setFont('Helvetica', '', 8)
->cell(0, 10, 'Halaman ' . $doc->getPage() . '/' . $doc->getNumPages(), align: 'C');
});
$pdf->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Konten dengan header dan footer kustom');Aktifkan / Nonaktifkan
$pdf->setPrintHeader(false); // Sembunyikan rendering header
$pdf->setPrintFooter(false); // Sembunyikan rendering footerMargin
$pdf->setHeaderMargin(float $margin); // Jarak di atas header
$pdf->setFooterMargin(float $margin); // Jarak di bawah footerMargin ini mendefinisikan jarak antara tepi halaman dan konten header/footer.
Layout Multi-Kolom
Mendefinisikan Kolom
$pdf = Document::create()
->addPage()
->setColumnsArray([
['w' => 90, 's' => 5], // Kolom 1: lebar 90mm, jarak 5mm
['w' => 90, 's' => 0], // Kolom 2: lebar 90mm
])
->setColumn(0)
->setFont('Helvetica', '', 10)
->multiCell(0, 5, 'Konten kolom kiri...')
->setColumn(1)
->multiCell(0, 5, 'Konten kolom kanan...');Setiap entry mendefinisikan kolom dengan w (lebar) dan s (spasi). Gunakan setColumn() untuk beralih antar kolom.
Method Kolom
$pdf->setColumnsArray(array $columns); // Definisikan struktur kolom
$pdf->setColumn(int $col); // Beralih ke kolom (0-based)
$col = $pdf->getColumn(); // Dapatkan indeks kolom saat iniMode Booklet
Mode booklet bergantian antara margin dalam dan luar sehingga halaman bisa dilipat dan dijilid:
$pdf->setBooklet(bool $val, float $inner, float $outer);| Parameter | Deskripsi |
|---|---|
$val | true untuk mengaktifkan, false untuk menonaktifkan |
$inner | Margin dalam (jilid) dalam mm |
$outer | Margin luar (tepi) dalam mm |
$pdf = Document::create()
->setBooklet(true, 20, 10)
->addPage() // Halaman ganjil: margin dalam di kiri
->cell(0, 10, 'Halaman 1 — margin kiri lebih lebar untuk jilid')
->addPage() // Halaman genap: margin dalam di kanan
->cell(0, 10, 'Halaman 2 — margin kanan lebih lebar untuk jilid');Pergantian margin terjadi secara otomatis pada setiap panggilan addPage().
Memilih Alat Layout yang Tepat
| Kebutuhan | Solusi |
|---|---|
| Branding konsisten di setiap halaman | setHeaderData() atau setHeaderCallback() |
| Nomor halaman di footer | setFooterCallback() dengan getPage() / getNumPages() |
| Kolom gaya koran | setColumnsArray() + setColumn() |
| Output booklet siap cetak | setBooklet() |
| Hilangkan header di halaman tertentu | setPrintHeader(false) sebelum addPage() |