Skip to content

Layout (HasLayout)

Il trait HasLayout e il modulo Layout forniscono struttura livello-pagina: intestazioni, piè di pagina, layout multi-colonna e modalità booklet. Il modulo è composto da PageManager, ColumnManager, BookletManager e HeaderFooterManager.

Tutti i metodi restituiscono static, quindi ogni chiamata può essere concatenata.

Intestazioni e Piè di Pagina

Intestazione Integrata

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setHeaderData('logo.png', 30, 'Company Name', 'Generated report — Confidential')
    ->setHeaderMargin(10)
    ->setFooterMargin(10)
    ->addPage();

setHeaderData() accetta un percorso logo, larghezza logo, stringa titolo e stringa descrizione.

Callback Personalizzate

Per controllo completo, registra callback che ricevono l'istanza Document:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create();

$pdf->setHeaderCallback(function (Document $doc) {
    $doc->setFont('Helvetica', 'B', 12)
        ->cell(0, 10, 'My Company — Confidential', align: 'C', newLine: true)
        ->line(10, 18, 200, 18);
});

$pdf->setFooterCallback(function (Document $doc) {
    $doc->setY(-15)
        ->setFont('Helvetica', '', 8)
        ->cell(0, 10, 'Page ' . $doc->getPage() . '/' . $doc->getNumPages(), align: 'C');
});

$pdf->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Content with custom header and footer');

Abilita / Disabilita

php
$pdf->setPrintHeader(false);  // Sopprimi rendering intestazione
$pdf->setPrintFooter(false);  // Sopprimi rendering piè di pagina

Margini

php
$pdf->setHeaderMargin(float $margin);  // Spazio sopra intestazione
$pdf->setFooterMargin(float $margin);  // Spazio sotto piè di pagina

Questi margini definiscono il gap tra bordo pagina e contenuto intestazione/piè di pagina.

Layout Multi-Colonna

Definizione Colonne

php
$pdf = Document::create()
    ->addPage()
    ->setColumnsArray([
        ['w' => 90, 's' => 5],  // Colonna 1: 90mm larghezza, 5mm spazio
        ['w' => 90, 's' => 0],  // Colonna 2: 90mm larghezza
    ])
    ->cell(0, 10, 'Text flows across columns automatically...');

Rilasciato sotto licenza LGPL-3.0-or-later.