Skip to content

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

MetodoScopo
startTemplate()Inizia registrazione template; restituisce ID template
endTemplate()Ferma registrazione
printTemplate()Posiziona un template registrato sulla pagina corrente

Esempio Base

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

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

Inizia registrazione nuovo template. Tutte le operazioni disegno dopo questa chiamata sono catturate nel template invece di essere renderizzate direttamente su una pagina.

ParametroTipoDescrizione
$wfloatLarghezza template in unità utente (0 = larghezza pagina)
$hfloatAltezza 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()

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

Timbra un template precedentemente registrato sulla pagina corrente alla posizione specificata.

ParametroTipoDescrizione
$idintID template restituito da startTemplate()
$xfloatPosizione X sulla pagina
$yfloatPosizione Y sulla pagina
$wfloatLarghezza visualizzazione (0 = larghezza template originale)
$hfloatAltezza 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

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, "Content for page {$i}", newLine: true);
}

Logo Scalato

Stampa lo stesso template a dimensioni diverse:

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)   // Dimensione piena
    ->printTemplate($logo, 10, 40, 30, 10);   // Metà dimensione

Suggerimenti

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

Rilasciato sotto licenza LGPL-3.0-or-later.