Configuration
TCPDF-Next est livré avec des paramètres par défaut sensés qui fonctionnent immédiatement. Chaque paramètre peut être remplacé lors de la création du document ou ultérieurement via des setters fluides.
Valeurs par défaut du document
Lorsque vous appelez Document::create(), les paramètres par défaut suivants s'appliquent sauf indication contraire :
| Paramètre | Défaut | Description |
|---|---|---|
| Taille de page | PageSize::A4 | ISO A4 (210 × 297 mm) |
| Orientation | Orientation::Portrait | Mode portrait |
| Unité | Unit::Millimeter | Toutes les mesures en millimètres |
| Marge gauche | 15 mm | Marge de page gauche |
| Marge supérieure | 27 mm | Marge de page supérieure |
| Marge droite | 15 mm | Marge de page droite |
| Marge inférieure | 25 mm | Marge de page inférieure |
| Saut de page auto | true | Saut de page automatique près de la marge inférieure |
| Police | Helvetica, 12 pt | Famille et taille de police par défaut |
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
$doc = Document::create(
pageSize: PageSize::Letter,
orientation: Orientation::Landscape,
unit: Unit::Inch,
);Marges
Les marges peuvent être définies globalement ou par page :
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;
// Marges globales
$doc->setMargins(new Margin(
left: 20,
top: 30,
right: 20,
bottom: 25,
));
// Override pour une page spécifique
$doc->addPage(
margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);Chemins et répertoires de polices
TCPDF-Next recherche les fichiers de polices dans un ensemble configurable de répertoires. Les polices intégrées (Helvetica, Courier, Times, Symbol, ZapfDingbats) sont toujours disponibles. Pour les polices personnalisées ou Unicode, enregistrez des chemins supplémentaires :
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
$doc->configureFonts(function (FontConfig $config): void {
// Ajouter un répertoire contenant des fichiers .ttf / .otf
$config->addDirectory('/path/to/my/fonts');
// Ajouter un fichier de police unique avec un alias de famille
$config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});TIP
Les fichiers de polices sont intégrés en sous-ensembles par défaut, gardant la sortie PDF compacte. L'intégration complète peut être activée par police si nécessaire.
Paramètres de chiffrement
Le chiffrement PDF est configuré via l'objet valeur EncryptionConfig :
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
$doc->setEncryption(new EncryptionConfig(
level: EncryptionLevel::AES256,
userPassword: 'reader-pass',
ownerPassword: 'admin-pass',
permissions: [
Permission::Print,
Permission::Copy,
],
));| Niveau | Description |
|---|---|
EncryptionLevel::RC4_40 | RC4 40-bit legacy (non recommandé) |
EncryptionLevel::RC4_128 | RC4 128-bit |
EncryptionLevel::AES128 | AES 128-bit |
EncryptionLevel::AES256 | AES 256-bit (recommandé) |
Paramètres de PDF balisé
Les PDF balisés (accessibles) améliorent le support des lecteurs d'écran et sont requis par PDF/UA. Activez le balisage globalement :
$doc->enableTaggedPdf();
// Optionnellement, définissez la langue du document pour l'accessibilité
$doc->setLanguage('en');Lorsque le mode PDF balisé est actif, les balises structurelles (<P>, <H1>–<H6>, <Table>, etc.) sont émises automatiquement par les API de texte et de tableau.
Mode déterministe
Par défaut, les PDF contiennent des horodatages et des identifiants uniques qui rendent chaque sortie unique. Le mode déterministe les supprime, produisant une sortie identique octet par octet pour la même entrée — utile pour les tests snapshot et les builds reproductibles :
$doc->enableDeterministicMode();WARNING
Le mode déterministe supprime les dates de création/modification et l'identifiant de fichier unique. Ne l'utilisez pas pour les documents qui nécessitent ces champs de métadonnées.
Exemple de configuration complète
Ci-dessous un exemple unique montrant toutes les options de configuration majeures ensemble :
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;
$doc = Document::create(
pageSize: PageSize::A4,
orientation: Orientation::Portrait,
unit: Unit::Millimeter,
);
// Marges
$doc->setMargins(new Margin(
left: 15,
top: 27,
right: 15,
bottom: 25,
));
// Polices
$doc->configureFonts(function (FontConfig $config): void {
$config->addDirectory('/path/to/fonts');
});
// Chiffrement
$doc->setEncryption(new EncryptionConfig(
level: EncryptionLevel::AES256,
userPassword: '',
ownerPassword: 'secret',
permissions: [Permission::Print],
));
// Accessibilité
$doc->enableTaggedPdf();
$doc->setLanguage('en');
// Sortie déterministe (pour les tests)
// $doc->enableDeterministicMode();
// Métadonnées
$doc->setTitle('Company Report');
$doc->setAuthor('TCPDF-Next');
$doc->setSubject('Monthly Summary');
$doc->setKeywords('report, finance, 2026');
$doc->addPage();
$doc->cell(text: 'Hello, configured world!');
$doc->save('/tmp/configured.pdf');