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 :
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 :
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 Enum | Dimensions |
|---|---|
PageSize::A3 | 297 × 420 mm |
PageSize::A4 | 210 × 297 mm |
PageSize::A5 | 148 × 210 mm |
PageSize::Letter | 215.9 × 279.4 mm |
PageSize::Legal | 215.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.
// 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 :
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 :
$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 :
$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 :
$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 :
$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
$doc->imageFromFile(
path: '/images/logo.png',
x: 15,
y: 15,
width: 40,
);Depuis une chaîne ou ressource
$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
$doc->save('/reports/invoice-1042.pdf');Envoyer au navigateur
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
$pdfBytes = $doc->getPdfData();
// Utiliser avec une réponse PSR-7, un job de file d'attente, un upload S3, etc.Enum OutputDestination
| Valeur | Comportement |
|---|---|
OutputDestination::Inline | Envoie au navigateur pour affichage inline |
OutputDestination::Download | Envoie au navigateur comme téléchargement de fichier |
OutputDestination::File | Écrit dans un chemin de fichier (utilisé en interne par save()) |
OutputDestination::String | Retourne 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 :
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 :
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.