Aller au contenu

NextPDF — vue d’ensemble de compat-legacy

nextpdf/compat-legacy est une alternative compatible avec TCPDF : une couche de compatibilité qui expose l’API publique de TCPDF 6.x par-dessus le moteur PDF 2.0 de NextPDF. Elle existe pour une seule tâche — permettre à une base de code qui dépend déjà de TCPDF 6.x de s’exécuter sur le moteur NextPDF sans réécriture, afin que la migration puisse avancer fichier par fichier plutôt qu’en une seule fois.

Ce n’est pas un fork de TCPDF, et ce n’est pas présenté comme un clone comportemental garanti. C’est une implémentation indépendante qui conserve les signatures d’appel de TCPDF. La description exacte est la suivante : elle couvre 94 des quelque 120 méthodes TCPDF 6.x recensées par délégation directe, les méthodes restantes présentant des différences comportementales documentées (voir /integrations/tcpdf-compat/method-coverage/).

  • Une aide à la migration. Le paquet fait partie de la famille compat de NextPDF. Son but est de raccourcir le chemin pour quitter une ancienne bibliothèque PDF, pas de devenir une dépendance permanente. Considère-le comme un échafaudage que tu retires au fur et à mesure que tu adoptes l’API moderne.
  • Un adaptateur de surface d’API. Il fournit le nom de classe TCPDF, les noms de méthodes, l’ordre des paramètres et les valeurs par défaut de 6.2.13. Les appels sont délégués à une instance NextPDF\Core\Document.
  • Une implémentation indépendante, en salle blanche. Aucun code source de TCPDF, artefact de build, donnée de police de caractères ni autre expression susceptible d’être protégée par le droit d’auteur n’a été copié ni transposé dans ce paquet. Le nom TCPDF est utilisé uniquement aux fins d’identification pour l’interopérabilité. La déclaration de référence figure dans le fichier NOTICE du paquet.
  • Ce n’est pas un « remplacement direct » avec une sortie identique au bit près. Pour les méthodes déléguées, le rendu visible est compatible, mais les octets du PDF rendu diffèrent, car le moteur sous-jacent est une implémentation PDF 2.0 différente et indépendante.
  • Ce n’est pas « 100 % compatible TCPDF ». Un ensemble défini de méthodes acceptent des paramètres hérités que le moteur n’honore pas, ou ne produisent aucun effet. Ces cas sont énumérés et testés — voir /integrations/tcpdf-compat/method-coverage/.
  • Ce n’est pas à lui seul un produit de signature ou d’archivage. Les signatures numériques et la conformité d’archivage PDF/A sont réservées à une édition NextPDF commerciale. Cette documentation ne formule aucune revendication de signature certifiée, garantie ou juridiquement valable.

Réécrire intégralement chaque appel TCPDF dans une grande application est très risqué et se livre difficilement de façon incrémentale. La couche de compatibilité te permet de :

  1. Remplacer la dépendance et exécuter ta suite de tests existante pour repérer ce qui fonctionne déjà sans modification.
  2. Utiliser le mode strict comme outil d’audit pour énumérer chaque endroit où le comportement de TCPDF ne peut pas être reproduit exactement.
  3. Migrer ces points d’appel vers l’API NextPDF moderne un par un, en gardant l’application en état d’être livrée tout au long du processus.

L’état cible est l’API NextPDF\Core\Document moderne, une fois la couche de compatibilité retirée. Voir /integrations/tcpdf-compat/migration/ pour la stratégie complète.

Quand un appel TCPDF est délégué, il s’exécute sur un moteur PDF 2.0 (ISO 32000-2), avec le chiffrement AES-256 du gestionnaire standard disponible et une sûreté de typage PHPStan niveau 10 sur l’ensemble de l’adaptateur. La sortie est toujours écrite en PDF 2.0 ; l’adaptateur ne peut pas cibler une version PDF antérieure (voir /integrations/tcpdf-compat/method-coverage/ §4).

L’adaptateur durcit plusieurs pièges historiques de TCPDF 6.2.13 :

Comportement héritéComportement de l’adaptateur
Error() appelle die() et arrête silencieusement le processusError() lève une RuntimeException — observable et interceptable
Méthode HTML qui pouvait exécuter du PHP depuis le balisageCette échappatoire est désactivée — le balisage ne peut pas déclencher l’exécution de PHP
Output() renvoie directement la sortie et peut corrompre les tampons de sortie des workersLa sortie est routée via un pont de destination sécurisé
Récursion header/footer non protégéeProtection contre la récursion

La couche de compatibilité est livrée dans la distribution core (nextpdf/compat-legacy, nécessitant nextpdf/core ^3.0). Le chiffrement via le gestionnaire standard est disponible dans core. Les signatures numériques et la conformité d’archivage PDF/A nécessitent une édition NextPDF commerciale ; l’adaptateur expose les points d’entrée, mais le chemin core n’est pas un produit de signature. Voir /integrations/tcpdf-compat/security-and-operations/ pour la formulation précise.

  • /integrations/tcpdf-compat/install/ — installe le paquet et vérifie la liaison avec le moteur.
  • /integrations/tcpdf-compat/quickstart/ — un premier document exécutable et adossé à des tests.
  • /integrations/tcpdf-compat/method-coverage/ — ce que fait exactement chaque méthode TCPDF ici.
  • /integrations/tcpdf-compat/migration/ — la stratégie de migration fichier par fichier.
  • /integrations/tcpdf-compat/configuration/ — le mode strict et la configuration de l’adaptateur.
  • /integrations/tcpdf-compat/production-usage/ — exécuter l’adaptateur sous charge et dans des workers.
  • /integrations/tcpdf-compat/security-and-operations/ — chiffrement, posture de signature, durcissement.
  • /integrations/tcpdf-compat/troubleshooting/ — les échecs de migration courants et leurs corrections.
  • /integrations/tcpdf-compat/integration/ / /integrations/tcpdf-compat/boot-and-discovery/ — câbler la façade dans une application et enregistrer les alias de classes globaux.
  • docs/TCPDF_COVERAGE.md — matrice de couverture de référence (dans le dépôt)
  • Le fichier NOTICE du paquet — déclaration d’implémentation indépendante