Skip to content

Output Testo (HasTextOutput)

Il trait HasTextOutput fornisce i metodi primari per posizionare testo su una pagina. Ogni metodo serve un modello layout diverso: celle fisse, testo fluente, posizionamento assoluto e rendering HTML.

Riferimento Rapido

MetodoModello LayoutWrapping
cell()Box riga singolaNo — il testo viene tagliato
multiCell()Blocco multi-rigaSì — va a capo automaticamente alla larghezza cella
text()Posizione assolutaNo
write()Flusso inlineSì — fluisce come un word processor
writeHtml()Blocco HTMLSì — layout HTML completo
writeHtmlCell()HTML in cella posizionata
ln()Interruzione rigaN/A

Esempio Base

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Single line cell', newLine: true)
    ->multiCell(0, 10, 'This is a longer text that will automatically wrap to multiple lines when it reaches the edge of the printable area.')
    ->ln(5)
    ->text(50.0, 100.0, 'Absolute positioned text')
    ->write(10, 'Inline text that ')
    ->write(10, 'continues flowing.');

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

cell()

Disegna una cella rettangolare a riga singola con bordo opzionale, riempimento sfondo, allineamento e link.

php
$pdf->cell(
    float  $w,           // Larghezza (0 = estendi a margine destro)
    float  $h,           // Altezza
    string $txt,         // Contenuto testo
    mixed  $border = 0,  // 0, 1, o combinazione 'LTRB'
    bool   $newLine = false,
    string $align  = '',  // L, C, R, J
    bool   $fill   = false,
    mixed  $link   = '',
);

Il cursore si sposta a destra della cella (o alla riga successiva quando $newLine è true).

Allineamento

php
use Yeeefang\TcpdfNext\Contracts\Enums\Alignment;

$pdf->cell(0, 10, 'Left aligned')
    ->ln()
    ->cell(0, 10, 'Centered', align: 'C')
    ->ln()
    ->cell(0, 10, 'Right aligned', align: 'R')
    ->ln()
    ->cell(0, 10, 'Justified text in a cell', align: 'J');

Bordi

php
// Nessun bordo
$pdf->cell(60, 10, 'No border', border: 0);

// Cornice completa
$pdf->cell(60, 10, 'Full frame', border: 1);

// Lati individuali — Left, Top, Right, Bottom
$pdf->cell(60, 10, 'Top and bottom', border: 'TB');
$pdf->cell(60, 10, 'Left only', border: 'L');

Riempimento

php
$pdf->setFillColor(230, 230, 250)
    ->cell(0, 10, 'Lavender background', fill: true, newLine: true);

multiCell()

Renderizza un blocco testo multi-riga che va a capo automaticamente alla larghezza specificata. Dopo l'output, il cursore si sposta sotto la cella.

php
$pdf->multiCell(
    float  $w,           // Larghezza (0 = estendi a margine destro)
    float  $h,           // Altezza riga minima
    string $txt,         // Contenuto testo
    mixed  $border = 0,
    string $align  = 'J',
    bool   $fill   = false,
);
php
$pdf->setFont('Helvetica', '', 11)
    ->multiCell(80, 6, 'This paragraph will wrap at 80mm width. The text flows naturally, respecting word boundaries and hyphenation rules.', border: 1, align: 'J');

text()

Posiziona una stringa singola in una posizione assoluta (x, y). Il cursore non viene mosso dopo — questo è un metodo "fire and forget".

php
$pdf->text(20.0, 50.0, 'Positioned at x=20, y=50');

Usa text() per watermark, etichette o contenuto overlay dove controlli la posizione esatta.

write()

Scrive testo inline alla posizione corrente del cursore. Il testo va a capo automaticamente quando raggiunge il margine destro, proprio come digitare in un word processor.

php
$pdf->setFont('Helvetica', '', 12)
    ->write(6, 'This sentence starts here and ')
    ->setFont('Helvetica', 'B', 12)
    ->write(6, 'this part is bold')
    ->setFont('Helvetica', '', 12)
    ->write(6, ' then back to normal.');

Il primo parametro ($h) è l'altezza riga. Usa write() quando hai bisogno di cambi font o stile a metà frase.

writeHtml()

Renderizza una stringa HTML usando il parser HTML integrato. Supporta tag comuni inclusi intestazioni, paragrafi, tabelle, liste e stili inline.

php
$pdf->writeHtml('<h2>Section Title</h2><p>Paragraph with <b>bold</b> and <i>italic</i> text.</p>');

Tabelle

php
$html = '
<table border="1" cellpadding="4">
    <thead>
        <tr>
            <th>Product</th>
            <th>Qty</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Widget A</td>
            <td align="center">10</td>
            <td align="right">$25.00</td>
        </tr>
        <tr>
            <td>Widget B</td>
            <td align="center">5</td>
            <td align="right">$42.50</td>
        </tr>
    </tbody>
</table>';

$pdf->writeHtml($html);

writeHtmlCell()

Combina rendering HTML con posizionamento cella. Il contenuto HTML viene posizionato dentro una cella alle coordinate specificate.

php
$pdf->writeHtmlCell(
    float  $w,     // Larghezza
    float  $h,     // Altezza minima
    float  $x,     // Posizione X
    float  $y,     // Posizione Y
    string $html,
    mixed  $border = 0,
    bool   $fill   = false,
);
php
$pdf->writeHtmlCell(90, 0, 10, 50, '<p style="color:#336699;">Positioned HTML content with <b>formatting</b>.</p>', border: 1);

ln()

Inserisce un'interruzione di riga. Il cursore si sposta al margine sinistro e in basso dell'altezza specificata.

php
$pdf->ln();       // Interruzione riga usando l'altezza ultima cella
$pdf->ln(10);     // Interruzione riga con spaziatura verticale 10mm
$pdf->ln(0);      // Sposta a margine sinistro senza movimento verticale

Scegliere il Metodo Giusto

ScenarioMetodo
Celle tabella, etichette, dati riga singolacell()
Paragrafi, descrizioni, testo lungomultiCell()
Watermark, timbri, etichette assolutetext()
Testo inline con formattazione mistawrite()
Contenuto ricco con markup HTMLwriteHtml()
Contenuto HTML a posizione specificawriteHtmlCell()

Rilasciato sotto licenza LGPL-3.0-or-later.