Skip to content

Utilisation de base

Cette page parcourt les éléments constitutifs fondamentaux de chaque document TCPDF-Next : créer un document, ajouter des pages, écrire du texte, intégrer des images et produire la sortie.

Créer un document

La factory statique Document::create() est le point d'entrée unique pour chaque PDF :

php
use Yeeefang\TcpdfNext\Core\Document;

$doc = Document::create();

Tous les paramètres sont optionnels — les valeurs par défaut vous donnent un document A4 portrait mesuré en millimètres. Consultez la page Configuration pour la liste complète des options.

Ajouter des pages

Un document commence vide. Appelez addPage() au moins une fois avant d'écrire du contenu :

php
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

// Ajouter une page avec les paramètres par défaut du document
$doc->addPage();

// Ajouter une page Letter paysage avec marges personnalisées
$doc->addPage(
    pageSize: PageSize::Letter,
    orientation: Orientation::Landscape,
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Tailles de page disponibles

PageSize est une enum backed qui inclut toutes les tailles standard ISO et nord-américaines :

Valeur EnumDimensions
PageSize::A3297 × 420 mm
PageSize::A4210 × 297 mm
PageSize::A5148 × 210 mm
PageSize::Letter215.9 × 279.4 mm
PageSize::Legal215.9 × 355.6 mm

Les tailles personnalisées sont supportées via PageSize::custom(width, height).

Définir les polices

TCPDF-Next inclut les polices de base PDF standard plus la famille Unicode DejaVu Sans.

php
// Police de base intégrée
$doc->setFont('Helvetica', size: 12);

// Police Unicode intégrée
$doc->setFont('DejaVuSans', size: 10);

// Variantes gras / italique
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 14);
$doc->setFont('Helvetica', style: FontStyle::BoldItalic, size: 14);

Polices personnalisées

Enregistrez une police TrueType ou OpenType, puis utilisez-la par son alias :

php
use Yeeefang\TcpdfNext\Core\Config\FontConfig;

$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/Inter-Regular.ttf', alias: 'Inter');
});

$doc->setFont('Inter', size: 11);

Sortie de texte

TCPDF-Next fournit quatre méthodes pour placer du texte sur une page. Chacune sert un besoin de mise en page différent.

cell()

Imprime une cellule d'une seule ligne. Idéal pour les étiquettes, cellules de tableau et texte court :

php
$doc->cell(
    width: 80,
    height: 10,
    text: 'Invoice #1042',
    border: true,
    align: Align::Center,
);

multiCell()

Imprime du texte qui se replie automatiquement dans une largeur donnée. Le curseur se déplace vers le bas après chaque appel :

php
$doc->multiCell(
    width: 0,        // 0 = largeur disponible complète
    height: 7,
    text: 'This is a longer paragraph that will wrap across multiple lines '
        . 'based on the available width and the current font size.',
);

text()

Place du texte à une position absolue (x, y). Ne déplace pas le curseur :

php
$doc->text(x: 105, y: 20, text: 'Centered Title', align: Align::Center);

write()

Écrit du texte en ligne à la position actuelle du curseur. Supporte les liens et se fond naturellement dans un paragraphe :

php
$doc->write(height: 5, text: 'Visit the ');
$doc->write(height: 5, text: 'TCPDF-Next docs', link: 'https://tcpdf-next.dev');
$doc->write(height: 5, text: ' for more information.');

Images

Depuis un chemin de fichier

php
$doc->imageFromFile(
    path: '/images/logo.png',
    x: 15,
    y: 15,
    width: 40,
);

Depuis une chaîne ou ressource

php
$binary = file_get_contents('https://example.com/photo.jpg');

$doc->image(
    data: $binary,
    x: 15,
    y: 60,
    width: 50,
    type: 'JPEG',
);

Formats supportés : PNG, JPEG, GIF, SVG, WebP.

Sauvegarde et sortie

TCPDF-Next offre plusieurs façons de récupérer le PDF final.

Sauvegarder sur disque

php
$doc->save('/reports/invoice-1042.pdf');

Envoyer au navigateur

php
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

// Affichage inline (Content-Disposition: inline)
$doc->output('invoice.pdf', OutputDestination::Inline);

// Forcer le téléchargement (Content-Disposition: attachment)
$doc->output('invoice.pdf', OutputDestination::Download);

Obtenir les données PDF brutes

php
$pdfBytes = $doc->getPdfData();

// Utiliser avec une réponse PSR-7, un job de file d'attente, un upload S3, etc.

Enum OutputDestination

ValeurComportement
OutputDestination::InlineEnvoie au navigateur pour affichage inline
OutputDestination::DownloadEnvoie au navigateur comme téléchargement de fichier
OutputDestination::FileÉcrit dans un chemin de fichier (utilisé en interne par save())
OutputDestination::StringRetourne une chaîne binaire brute (utilisé en interne par getPdfData())

API fluide

La plupart des setters retournent $this, permettant un style chaîné et fluide :

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;

$pdf = Document::create()
    ->setTitle('Monthly Report')
    ->setAuthor('Acme Corp')
    ->addPage(pageSize: PageSize::A4, orientation: Orientation::Portrait)
    ->setFont('Helvetica', style: FontStyle::Bold, size: 18)
    ->cell(width: 0, height: 15, text: 'Monthly Report — February 2026', align: Align::Center)
    ->ln()
    ->setFont('Helvetica', size: 11)
    ->multiCell(width: 0, height: 6, text: 'This report summarises key metrics...')
    ->save('/reports/monthly.pdf');

Exemple complet

Tout rassembler :

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

$doc = Document::create();

$doc->setTitle('Hello World');
$doc->setAuthor('TCPDF-Next');

$doc->addPage();

// En-tête
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 20);
$doc->cell(width: 0, height: 15, text: 'Hello, TCPDF-Next!', align: Align::Center);
$doc->ln(20);

// Corps
$doc->setFont('DejaVuSans', size: 12);
$doc->multiCell(
    width: 0,
    height: 7,
    text: 'TCPDF-Next is a modern, type-safe PDF generation library for PHP 8.5+. '
        . 'It provides a clean API, strict static analysis, and comprehensive Unicode support.',
);

// Logo
$doc->imageFromFile(path: __DIR__ . '/logo.png', x: 15, y: 80, width: 30);

// Sortie
$doc->output('hello.pdf', OutputDestination::Download);

Prochaines étapes

  • Configuration — affiner les valeurs par défaut, le chiffrement et l'accessibilité.
  • Configuration — comprendre comment Core, Pro et Artisan s'assemblent.
  • FAQ — réponses aux questions courantes.

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