Skip to content

Questions fréquemment posées

Pourquoi TCPDF-Next nécessite-t-il PHP 8.5+ ?

PHP 8.5 introduit des fonctionnalités de langage fondamentales à l'architecture de la bibliothèque — notamment le support du pipe operator, l'inférence de type améliorée et la sémantique readonly renforcée. Cibler un runtime moderne permet à TCPDF-Next d'être plus petit, plus rapide et plus sûr par conception plutôt que par contournement.

Pour une justification plus approfondie, voir Pourquoi PHP 8.5 ?.

TCPDF-Next est-il un fork de TCPDF ?

Non. TCPDF-Next est une réécriture complète depuis zéro. Il ne partage aucun code avec la bibliothèque TCPDF originale. La partie "TCPDF" du nom reconnaît le domaine problématique (génération PDF en PHP) et l'influence du projet legacy sur la communauté, mais l'architecture, la surface API et l'implémentation sont entièrement nouvelles.

Puis-je l'utiliser sans Laravel ?

Oui. Le package tcpdf-next/core est entièrement framework-agnostique. Il ne dépend que de PHP 8.5+ et n'a aucune dépendance de framework. Vous pouvez l'utiliser dans n'importe quelle application PHP — Symfony, Slim, scripts PHP vanilla, outils CLI ou workers de file d'attente.

Le package optionnel tcpdf-next/laravel ajoute des commodités spécifiques à Laravel (service provider, Facade, publication de config) mais n'est pas requis.

Quelle est la différence entre Core et Pro ?

CorePro
LicenceMITCommercial
Génération PDFCompletComplet
Typographie avancéeBasiqueShaping OpenType, BiDi, ligatures
Signatures numériquesNon inclusPAdES / CAdES / X.509
PDF/A, PDF/XNon inclusModes de conformité complets
Moteur codes-barresCodes-barres 1D1D + 2D (QR, DataMatrix, PDF417)
SupportCommunauté (GitHub Issues)Email prioritaire + SLA

Core est production-ready seul. Pro l'étend avec des fonctionnalités entreprise et conformité.

Comment générer du HTML-to-PDF avec support CSS3 complet ?

Utilisez le package Artisan (tcpdf-next/artisan). Il fournit un pipeline de rendu qui accepte HTML + CSS3 en entrée et produit une sortie PDF au pixel près, propulsé par TCPDF-Next Core en coulisses.

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">Styled paragraph.</p>');
$renderer->save('/output/report.pdf');

Artisan supporte Flexbox, Grid, web fonts, media queries et la plupart de la spécification CSS3.

TCPDF-Next supporte-t-il les langues CJK (chinois, japonais, coréen) ?

Oui. TCPDF-Next a un support de première classe pour les scripts CJK et les mises en page de texte complexe :

  • CjkFontValidator — valide et sous-ensemble les fichiers de polices CJK, assurant une couverture glyphe correcte.
  • BiDiResolver — gère le texte bidirectionnel (par ex., anglais et arabe/hébreu mixtes).
  • ArabicShaper — applique les règles de shaping contextuel pour l'arabe, le farsi et l'ourdou.

Intégrez n'importe quelle police TrueType/OpenType compatible CJK via la configuration de police, et le rendu de texte fonctionne automatiquement.

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

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // Chinois
$doc->cell(text: 'こんにちは世界');   // Japonais
$doc->cell(text: '안녕하세요 세계');   // Coréen

TCPDF-Next est-il production-ready ?

Oui. La bibliothèque est soutenue par un pipeline rigoureux de tests et d'analyse :

  • 908+ tests couvrant les scénarios unit, intégration et régression visuelle.
  • 28,881+ assertions à travers la suite de tests.
  • PHPStan Level 10 — le niveau d'analyse statique le plus strict — passe avec zéro erreur.
  • 100% declare(strict_types=1) à travers chaque fichier source.

La suite de tests s'exécute sur chaque pull request et doit passer avant la fusion.

Comment signaler une vulnérabilité de sécurité ?

N'ouvrez pas de GitHub issue publique. Utilisez plutôt GitHub Security Advisories pour signaler les vulnérabilités en privé. Les mainteneurs trieront le rapport, coordonneront un correctif et publieront une version de sécurité.

Pour plus d'informations, consultez le fichier SECURITY.md dans le dépôt.

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