Template (XObject)
PDF Form XObject — disebut sebagai template di TCPDF-Next — memungkinkan Anda merekam blok konten sekali dan mencetak di halaman berapa pun jumlahnya. Ini ideal untuk header, footer, watermark, logo, dan elemen apa pun yang berulang di seluruh dokumen.
Semua method mengembalikan static, sehingga setiap panggilan bisa di-chain (kecuali startTemplate(), yang mengembalikan template ID).
Referensi Cepat
| Method | Tujuan |
|---|---|
startTemplate() | Mulai merekam template; mengembalikan template ID |
endTemplate() | Berhenti merekam |
printTemplate() | Tempatkan template yang sudah direkam di halaman saat ini |
Contoh Dasar
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
// Buat template header yang bisa digunakan ulang
$tpl = $pdf->startTemplate(190, 20);
$pdf->setFont('Helvetica', 'B', 14)
->setTextColor(255, 102, 0)
->cell(0, 10, 'ACME Corp — Confidential', align: 'C')
->line(0, 18, 190, 18);
$pdf->endTemplate();
// Gunakan template di beberapa halaman
$pdf->addPage()
->printTemplate($tpl, 10, 10)
->setFont('Helvetica', '', 12)
->setY(35)
->cell(0, 10, 'Konten halaman 1', newLine: true)
->addPage()
->printTemplate($tpl, 10, 10)
->setY(35)
->cell(0, 10, 'Konten halaman 2', newLine: true);startTemplate()
$tpl = $pdf->startTemplate(float $w = 0, float $h = 0): intMulai merekam template baru. Semua operasi gambar setelah panggilan ini ditangkap ke dalam template alih-alih di-render langsung di halaman.
| Parameter | Tipe | Deskripsi |
|---|---|---|
$w | float | Lebar template dalam unit user (0 = lebar halaman) |
$h | float | Tinggi template dalam unit user (0 = tinggi halaman) |
Mengembalikan integer template ID yang digunakan untuk mereferensikan template nanti.
WARNING
Jangan panggil addPage() saat merekam template. Template menangkap konten dalam bounding box tetap — bukan halaman.
endTemplate()
Berhenti merekam dan memfinalisasi template. Konten yang digambar setelah panggilan ini masuk ke halaman saat ini lagi.
printTemplate()
$pdf->printTemplate(int $id, float $x, float $y, float $w = 0, float $h = 0): staticMencetak template yang sudah direkam ke halaman saat ini pada posisi yang ditentukan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
$id | int | Template ID yang dikembalikan oleh startTemplate() |
$x | float | Posisi X di halaman |
$y | float | Posisi Y di halaman |
$w | float | Lebar tampilan (0 = lebar template asli) |
$h | float | Tinggi tampilan (0 = tinggi template asli) |
Anda bisa mencetak template yang sama dalam ukuran berbeda dengan memvariasikan $w dan $h. Konten template diskalakan agar pas.
Kasus Penggunaan
Header / Footer Berulang
$header = $pdf->startTemplate(190, 15);
$pdf->setFont('Helvetica', 'B', 10)
->cell(95, 10, 'Company Name', align: 'L')
->cell(95, 10, date('Y-m-d'), align: 'R');
$pdf->endTemplate();
for ($i = 1; $i <= 5; $i++) {
$pdf->addPage()
->printTemplate($header, 10, 10)
->setY(30)
->cell(0, 10, "Konten untuk halaman {$i}", newLine: true);
}Logo Berskala
Cetak template yang sama dalam ukuran berbeda:
$logo = $pdf->startTemplate(60, 20);
$pdf->image('/path/to/logo.png', 0, 0, 60, 20);
$pdf->endTemplate();
$pdf->addPage()
->printTemplate($logo, 10, 10, 60, 20) // Ukuran penuh
->printTemplate($logo, 10, 40, 30, 10); // Setengah ukuranTips
- Template disimpan sebagai PDF Form XObject -- konten didefinisikan sekali tanpa peduli berapa kali dicetak, menjaga ukuran file tetap kecil.
- Template bisa berisi konten apa pun yang bisa digambar: teks, gambar, bentuk, dan bahkan template lain.
- Sistem koordinat di dalam template dimulai dari (0, 0) di pojok kiri atas bounding box.