Template (XObject)
I Form XObject PDF — riferiti come template in TCPDF-Next — ti consentono di registrare un blocco contenuto una volta e timbrarlo su qualsiasi numero di pagine. Questo è ideale per intestazioni, piè di pagina, watermark, loghi e qualsiasi elemento che si ripete attraverso un documento.
Tutti i metodi restituiscono static, quindi ogni chiamata può essere concatenata (eccetto startTemplate(), che restituisce l'ID template).
Riferimento Rapido
| Metodo | Scopo |
|---|---|
startTemplate() | Inizia registrazione template; restituisce ID template |
endTemplate() | Ferma registrazione |
printTemplate() | Posiziona un template registrato sulla pagina corrente |
Esempio Base
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
// Crea template intestazione riutilizzabile
$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();
// Usa il template su pagine multiple
$pdf->addPage()
->printTemplate($tpl, 10, 10)
->setFont('Helvetica', '', 12)
->setY(35)
->cell(0, 10, 'Page 1 content', newLine: true)
->addPage()
->printTemplate($tpl, 10, 10)
->setY(35)
->cell(0, 10, 'Page 2 content', newLine: true);startTemplate()
$tpl = $pdf->startTemplate(float $w = 0, float $h = 0): intInizia registrazione nuovo template. Tutte le operazioni disegno dopo questa chiamata sono catturate nel template invece di essere renderizzate direttamente su una pagina.
| Parametro | Tipo | Descrizione |
|---|---|---|
$w | float | Larghezza template in unità utente (0 = larghezza pagina) |
$h | float | Altezza template in unità utente (0 = altezza pagina) |
Restituisce un ID template intero usato per referenziare il template più tardi.
WARNING
Non chiamare addPage() mentre registri un template. I template catturano contenuto dentro un bounding box fisso — non sono pagine.
endTemplate()
Ferma registrazione e finalizza il template. Il contenuto disegnato dopo questa chiamata va di nuovo alla pagina corrente.
printTemplate()
$pdf->printTemplate(int $id, float $x, float $y, float $w = 0, float $h = 0): staticTimbra un template precedentemente registrato sulla pagina corrente alla posizione specificata.
| Parametro | Tipo | Descrizione |
|---|---|---|
$id | int | ID template restituito da startTemplate() |
$x | float | Posizione X sulla pagina |
$y | float | Posizione Y sulla pagina |
$w | float | Larghezza visualizzazione (0 = larghezza template originale) |
$h | float | Altezza visualizzazione (0 = altezza template originale) |
Puoi stampare lo stesso template a dimensioni diverse variando $w e $h. Il contenuto template viene scalato per adattarsi.
Casi d'Uso
Intestazione / Piè di Pagina Ripetuto
$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, "Content for page {$i}", newLine: true);
}Logo Scalato
Stampa lo stesso template a dimensioni diverse:
$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) // Dimensione piena
->printTemplate($logo, 10, 40, 30, 10); // Metà dimensioneSuggerimenti
- I template sono memorizzati come Form XObject PDF -- il contenuto è definito una volta indipendentemente da quante volte è stampato, mantenendo bassa la dimensione file.
- I template possono contenere qualsiasi contenuto disegnabile: testo, immagini, forme e anche altri template.
- Il sistema coordinate dentro un template inizia a (0, 0) nell'angolo in alto a sinistra del bounding box.