Skip to content

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ètreDéfautDescription
Taille de pagePageSize::A4ISO A4 (210 × 297 mm)
OrientationOrientation::PortraitMode portrait
UnitéUnit::MillimeterToutes les mesures en millimètres
Marge gauche15 mmMarge de page gauche
Marge supérieure27 mmMarge de page supérieure
Marge droite15 mmMarge de page droite
Marge inférieure25 mmMarge de page inférieure
Saut de page autotrueSaut de page automatique près de la marge inférieure
PoliceHelvetica, 12 ptFamille et taille de police par défaut
php
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 :

php
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 :

php
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 :

php
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,
    ],
));
NiveauDescription
EncryptionLevel::RC4_40RC4 40-bit legacy (non recommandé)
EncryptionLevel::RC4_128RC4 128-bit
EncryptionLevel::AES128AES 128-bit
EncryptionLevel::AES256AES 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 :

php
$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 :

php
$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 :

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

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