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
| Metodo | Modello Layout | Wrapping |
|---|---|---|
cell() | Box riga singola | No — il testo viene tagliato |
multiCell() | Blocco multi-riga | Sì — va a capo automaticamente alla larghezza cella |
text() | Posizione assoluta | No |
write() | Flusso inline | Sì — fluisce come un word processor |
writeHtml() | Blocco HTML | Sì — layout HTML completo |
writeHtmlCell() | HTML in cella posizionata | Sì |
ln() | Interruzione riga | N/A |
Esempio Base
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.
$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
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
// 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
$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.
$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,
);$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".
$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.
$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.
$pdf->writeHtml('<h2>Section Title</h2><p>Paragraph with <b>bold</b> and <i>italic</i> text.</p>');Tabelle
$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.
$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,
);$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.
$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 verticaleScegliere il Metodo Giusto
| Scenario | Metodo |
|---|---|
| Celle tabella, etichette, dati riga singola | cell() |
| Paragrafi, descrizioni, testo lungo | multiCell() |
| Watermark, timbri, etichette assolute | text() |
| Testo inline con formattazione mista | write() |
| Contenuto ricco con markup HTML | writeHtml() |
| Contenuto HTML a posizione specifica | writeHtmlCell() |