Skip to content

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

MethodTujuan
startTemplate()Mulai merekam template; mengembalikan template ID
endTemplate()Berhenti merekam
printTemplate()Tempatkan template yang sudah direkam di halaman saat ini

Contoh Dasar

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

php
$tpl = $pdf->startTemplate(float $w = 0, float $h = 0): int

Mulai merekam template baru. Semua operasi gambar setelah panggilan ini ditangkap ke dalam template alih-alih di-render langsung di halaman.

ParameterTipeDeskripsi
$wfloatLebar template dalam unit user (0 = lebar halaman)
$hfloatTinggi 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()

php
$pdf->printTemplate(int $id, float $x, float $y, float $w = 0, float $h = 0): static

Mencetak template yang sudah direkam ke halaman saat ini pada posisi yang ditentukan.

ParameterTipeDeskripsi
$idintTemplate ID yang dikembalikan oleh startTemplate()
$xfloatPosisi X di halaman
$yfloatPosisi Y di halaman
$wfloatLebar tampilan (0 = lebar template asli)
$hfloatTinggi 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

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

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

Tips

  • 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.

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