Skip to content

Sortie de texte (HasTextOutput)

Le trait HasTextOutput fournit les méthodes principales pour placer du texte sur une page. Chaque méthode sert un modèle de mise en page différent : cellules fixes, texte fluide, positionnement absolu et rendu HTML.

Référence rapide

MéthodeModèle de mise en pageEnroulement
cell()Boîte simple ligneNon — le texte est coupé
multiCell()Bloc multi-lignesOui — s'enroule auto à la largeur de cellule
text()Position absolueNon
write()Flux inlineOui — coule comme un traitement de texte
writeHtml()Bloc HTMLOui — mise en page HTML complète
writeHtmlCell()HTML dans cellule positionnéeOui
ln()Saut de ligneN/A

Exemple basique

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

Toutes les méthodes retournent static, donc chaque appel peut être chaîné.

cell()

Dessine une cellule rectangulaire simple ligne avec bordure, remplissage de fond, alignement et lien optionnels.

php
$pdf->cell(
    float  $w,           // Largeur (0 = étendre jusqu'à marge droite)
    float  $h,           // Hauteur
    string $txt,         // Contenu texte
    mixed  $border = 0,  // 0, 1, ou combinaison 'LTRB'
    bool   $newLine = false,
    string $align  = '',  // L, C, R, J
    bool   $fill   = false,
    mixed  $link   = '',
);

Le curseur se déplace à droite de la cellule (ou à la ligne suivante quand $newLine est true).

Alignement

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

Bordures

php
// Pas de bordure
$pdf->cell(60, 10, 'No border', border: 0);

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

// Côtés individuels — Left, Top, Right, Bottom
$pdf->cell(60, 10, 'Top and bottom', border: 'TB');
$pdf->cell(60, 10, 'Left only', border: 'L');

Remplissage

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

multiCell()

Rend un bloc de texte multi-lignes qui s'enroule automatiquement à la largeur spécifiée. Après la sortie, le curseur se déplace sous la cellule.

php
$pdf->multiCell(
    float  $w,           // Largeur (0 = étendre jusqu'à marge droite)
    float  $h,           // Hauteur de ligne minimale
    string $txt,         // Contenu texte
    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()

Place une seule chaîne à une position absolue (x, y). Le curseur n'est pas déplacé après — c'est une méthode "fire and forget".

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

Utilisez text() pour les filigranes, étiquettes ou contenu de superposition où vous contrôlez la position exacte.

write()

Écrit du texte inline à la position actuelle du curseur. Le texte s'enroule automatiquement quand il atteint la marge droite, comme taper dans un traitement de texte.

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

Le premier paramètre ($h) est la hauteur de ligne. Utilisez write() quand vous avez besoin de changements de police ou style en milieu de phrase.

writeHtml()

Rend une chaîne HTML en utilisant le parseur HTML intégré. Supporte les balises courantes incluant en-têtes, paragraphes, tableaux, listes et styles inline.

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

Tableaux

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

Combine le rendu HTML avec le positionnement de cellule. Le contenu HTML est placé à l'intérieur d'une cellule aux coordonnées spécifiées.

php
$pdf->writeHtmlCell(
    float  $w,     // Largeur
    float  $h,     // Hauteur minimale
    float  $x,     // Position X
    float  $y,     // Position 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()

Insère un saut de ligne. Le curseur se déplace à la marge gauche et descend de la hauteur spécifiée.

php
$pdf->ln();       // Saut de ligne utilisant la dernière hauteur de cellule
$pdf->ln(10);     // Saut de ligne avec espacement vertical de 10mm
$pdf->ln(0);      // Déplacer à la marge gauche sans mouvement vertical

Choisir la bonne méthode

ScénarioMéthode
Cellules de tableau, étiquettes, données simple lignecell()
Paragraphes, descriptions, texte longmultiCell()
Filigranes, tampons, étiquettes absoluestext()
Texte inline avec formatage mixtewrite()
Contenu riche avec balisage HTMLwriteHtml()
Contenu HTML à une position spécifiquewriteHtmlCell()

Distribué sous licence LGPL-3.0-or-later.