Skip to content

Saída de Texto (HasTextOutput)

O trait HasTextOutput fornece os métodos principais para posicionar texto na página. Cada método atende a um modelo de layout diferente: células fixas, texto fluido, posicionamento absoluto e renderização HTML.

Referência Rápida

MétodoModelo de LayoutQuebra de Linha
cell()Caixa de linha únicaNão — texto é cortado
multiCell()Bloco de múltiplas linhasSim — quebra automática na largura da célula
text()Posição absolutaNão
write()Fluxo inlineSim — flui como um processador de texto
writeHtml()Bloco HTMLSim — layout HTML completo
writeHtmlCell()HTML em célula posicionadaSim
ln()Quebra de linhaN/A

Exemplo Básico

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.');

Todos os métodos retornam static, então cada chamada pode ser encadeada.

cell()

Desenha uma célula retangular de linha única com borda opcional, preenchimento de fundo, alinhamento e link.

php
$pdf->cell(
    float  $w,           // Largura (0 = estender até a margem direita)
    float  $h,           // Altura
    string $txt,         // Conteúdo de texto
    mixed  $border = 0,  // 0, 1, ou combinação 'LTRB'
    bool   $newLine = false,
    string $align  = '',  // L, C, R, J
    bool   $fill   = false,
    mixed  $link   = '',
);

O cursor move para a direita da célula (ou para a próxima linha quando $newLine é true).

Alinhamento

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');

Bordas

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

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

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

Preenchimento

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

multiCell()

Renderiza um bloco de texto multi-linha que quebra automaticamente na largura especificada. Após a saída, o cursor move para abaixo da célula.

php
$pdf->multiCell(
    float  $w,           // Largura (0 = estender até a margem direita)
    float  $h,           // Altura mínima da linha
    string $txt,         // Conteúdo de texto
    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()

Posiciona uma string em uma posição absoluta (x, y). O cursor não é movido depois — este é um método "dispare e esqueça".

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

Use text() para marcas d'água, rótulos ou conteúdo sobreposto onde você controla a posição exata.

write()

Escreve texto inline na posição atual do cursor. O texto quebra automaticamente quando atinge a margem direita, assim como digitar em um processador de texto.

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.');

O primeiro parâmetro ($h) é a altura da linha. Use write() quando precisar de mudanças de fonte ou estilo no meio da sentença.

writeHtml()

Renderiza uma string HTML usando o analisador HTML embutido. Suporta tags comuns incluindo cabeçalhos, parágrafos, tabelas, listas e estilos inline.

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

Tabelas

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 renderização HTML com posicionamento de célula. O conteúdo HTML é colocado dentro de uma célula nas coordenadas especificadas.

php
$pdf->writeHtmlCell(
    float  $w,     // Largura
    float  $h,     // Altura mínima
    float  $x,     // Posição X
    float  $y,     // Posição 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()

Insere uma quebra de linha. O cursor move para a margem esquerda e desce pela altura especificada.

php
$pdf->ln();       // Quebra de linha usando a altura da última célula
$pdf->ln(10);     // Quebra de linha com espaçamento vertical de 10mm
$pdf->ln(0);      // Mover para margem esquerda sem movimento vertical

Escolhendo o Método Certo

CenárioMétodo
Células de tabela, rótulos, dados de linha únicacell()
Parágrafos, descrições, texto longomultiCell()
Marcas d'água, carimbos, rótulos absolutostext()
Texto inline com formatação mistawrite()
Conteúdo rico com marcação HTMLwriteHtml()
Conteúdo HTML em posição específicawriteHtmlCell()

Distribuído sob a licença LGPL-3.0-or-later.