Aller au contenu

Installer NextPDF compat-legacy

nextpdf/compat-legacy est une bibliothèque Composer. Elle nécessite PHP 8.4 ou version ultérieure et nextpdf/core ^3.0. Son installation ne modifie pas tes appels TCPDF existants — elle ajoute une classe vers laquelle tu peux basculer.

DépendanceVersionSource de vérité
PHP>=8.4 <9.0paquet composer.jsonrequire.php
nextpdf/core^3.0paquet composer.jsonrequire
Composer2.7 ou version ultérieuresocle de la chaîne d’outils

Le paquet déclare PHPStan niveau 10 sans baseline et fournit sa propre suite de tests. Il nécessite PHP 8.4 à l’exécution. Le moteur NextPDF, dans son ensemble, prend en charge PHP 8.1 à 8.4 via la ligne de backport, mais cet adaptateur fixe PHP 8.4 comme version minimale.

Ajoute le paquet avec Composer :

Fenêtre de terminal
composer require nextpdf/compat-legacy:^3.0

Composer résout nextpdf/core ^3.0 comme dépendance transitive. Aucune autre extension d’exécution n’est requise pour l’ensemble des fonctionnalités de base.

Les métadonnées du paquet répondent aussi à l’ancien nom nextpdf/compat-tcpdf via une entrée replace de Composer. Les nouvelles installations doivent demander nextpdf/compat-legacy — c’est le nom canonique du paquet.

Après l’installation, confirme que la classe de l’adaptateur se charge et que le rattachement au moteur se résout correctement. La vérification suivante produit un PDF d’une page entièrement en mémoire et vérifie l’en-tête PDF — c’est la même surface que celle couverte par le test du paquet tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php.

examples/install-verify.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, 'compat-legacy install verified');
$bytes = $pdf->Output('verify.pdf', 'S');
if (! str_starts_with($bytes, '%PDF')) {
fwrite(STDERR, "Install check failed: output is not a PDF.\n");
exit(1);
}
echo "OK: adapter loaded, engine linked, PDF produced (" . strlen($bytes) . " bytes).\n";

Exécute-le :

Fenêtre de terminal
php examples/install-verify.php

La sortie attendue est une seule ligne OK:. Le préfixe %PDF au début de la chaîne renvoyée confirme que l’adaptateur a construit un NextPDF\Core\Document, délégué les appels de page et de texte, puis sérialisé une sortie PDF 2.0 valide.

L’adaptateur nécessite nextpdf/core ^3.0. Confirme la version résolue :

Fenêtre de terminal
composer show nextpdf/core --format=json

Si Composer a résolu une version du moteur en dehors de ^3.0, l’adaptateur échouera immédiatement à la construction au lieu de produire une sortie erronée. Épingle explicitement le moteur dans ton composer.json si ton projet en dépend aussi directement.

Si ta base de code appelle new \TCPDF(...) dans l’espace de noms global et que tu ne peux pas encore modifier ces lignes use/require, le paquet peut enregistrer des alias globaux. Cette option doit être activée explicitement et elle est décrite dans /integrations/tcpdf-compat/boot-and-discovery/. Ne l’active pas si la bibliothèque TCPDF réelle est aussi installée dans le même processus — consulte /integrations/tcpdf-compat/troubleshooting/ pour connaître la règle d’évitement des conflits.

  • Elle ne modifie ni ne supprime une dépendance TCPDF existante. La suppression de tecnickcom/tcpdf est une étape volontaire et ultérieure dans /integrations/tcpdf-compat/migration/.
  • Elle n’active pas les signatures numériques ni le PDF/A. Ils nécessitent une édition commerciale de NextPDF (consulte /integrations/tcpdf-compat/security-and-operations/).
  • Elle ne modifie pas la cible de sortie du PDF. La sortie est toujours en PDF 2.0.
  • /integrations/tcpdf-compat/quickstart/ — produis ton premier vrai document.
  • /integrations/tcpdf-compat/configuration/ — mode strict et configuration de l’adaptateur.
  • /integrations/tcpdf-compat/migration/ — stratégie de migration fichier par fichier.
  • /integrations/tcpdf-compat/method-coverage/ — le détail exact de ce que fait ici chaque méthode TCPDF.
  • Le composer.json du paquet — les contraintes de dépendances qui font autorité
  • docs/TCPDF_COVERAGE.md — la matrice de couverture qui fait autorité (dans le dépôt)