Salta ai contenuti

Installazione di NextPDF compat-legacy

nextpdf/compat-legacy è una libreria Composer. Richiede PHP 8.4 o più recente e nextpdf/core ^3.0. La sua installazione non modifica le chiamate TCPDF esistenti: aggiunge una classe verso cui è possibile passare.

DipendenzaVersioneFonte autorevole
PHP>=8.4 <9.0pacchetto composer.jsonrequire.php
nextpdf/core^3.0pacchetto composer.jsonrequire
Composer2.7 o più recenteriferimento della toolchain

Il pacchetto dichiara PHPStan Level 10 senza baseline e include una propria suite di test. In fase di esecuzione richiede PHP 8.4. Il motore NextPDF, nel suo complesso, supporta PHP da 8.1 a 8.4 tramite la linea di backport, ma questo adattatore fissa PHP 8.4 come soglia minima.

Aggiungere il pacchetto con Composer:

Terminal window
composer require nextpdf/compat-legacy:^3.0

Composer risolve nextpdf/core ^3.0 come dipendenza transitiva. Non è richiesta nessun’altra estensione di runtime per l’insieme di funzionalità di base.

I metadati del pacchetto riconoscono anche il nome storico nextpdf/compat-tcpdf tramite una voce replace di Composer. Le nuove installazioni dovrebbero richiedere nextpdf/compat-legacy: è il nome canonico del pacchetto.

Dopo l’installazione, confermare che la classe dell’adattatore venga caricata e che il collegamento con il motore venga risolto. Il controllo seguente produce interamente in memoria un PDF di una pagina e ne verifica l’intestazione: è la stessa superficie coperta dal test del pacchetto 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";

Eseguirlo:

Terminal window
php examples/install-verify.php

L’output atteso è una sola riga OK:. Il prefisso %PDF nella stringa restituita conferma che l’adattatore ha costruito un NextPDF\Core\Document, delegato le chiamate di pagina e testo e serializzato un output PDF 2.0 valido.

L’adattatore richiede nextpdf/core ^3.0. Confermare la versione risolta:

Terminal window
composer show nextpdf/core --format=json

Se Composer ha risolto una versione del core al di fuori di ^3.0, l’adattatore fallirà immediatamente in fase di costruzione anziché produrre un output errato. Fissare esplicitamente il motore nel proprio composer.json se il progetto dipende direttamente anche da esso.

Se la base di codice istanzia new \TCPDF(...) nello spazio dei nomi globale e non è ancora possibile modificare quelle righe use/require, il pacchetto può registrare alias globali. È un’opzione facoltativa, descritta in /integrations/tcpdf-compat/boot-and-discovery/. Non abilitarli se la libreria TCPDF reale è installata anche nello stesso processo: vedere /integrations/tcpdf-compat/troubleshooting/ per la regola di prevenzione dei conflitti.

  • Non modifica né rimuove una dipendenza TCPDF esistente. La rimozione di tecnickcom/tcpdf è un passaggio successivo deliberato in /integrations/tcpdf-compat/migration/.
  • Non abilita le firme digitali né il formato PDF/A. Queste funzionalità richiedono un’edizione commerciale di NextPDF (vedere /integrations/tcpdf-compat/security-and-operations/).
  • Non modifica la destinazione dell’output PDF. L’output è sempre PDF 2.0.
  • /integrations/tcpdf-compat/quickstart/ — generare il primo documento reale.
  • /integrations/tcpdf-compat/configuration/ — modalità rigorosa e configurazione dell’adattatore.
  • /integrations/tcpdf-compat/migration/ — la strategia di migrazione file per file.
  • /integrations/tcpdf-compat/method-coverage/ — che cosa fa esattamente ciascun metodo TCPDF in questo contesto.
  • composer.json del pacchetto — vincoli di dipendenza autorevoli
  • docs/TCPDF_COVERAGE.md — matrice di copertura autorevole (nel repo)