Ga naar inhoud

NextPDF compat-legacy-integratie

Gebruik nextpdf/compat-legacy om een applicatie te koppelen, zodat bestaande TCPDF 6.x-code op de NextPDF-engine draait. Het pakket is een migratiehulpmiddel, geen permanente shim — verwijder het zodra u de moderne application programming interface (API) hebt overgenomen (zie /integrations/tcpdf-compat/migration/). Het is een TCPDF-compatibel alternatief, geen drop-in-kloon: 94 van de ~120 onderzochte TCPDF-methoden delegeren rechtstreeks. De overige methoden hebben gedocumenteerde gedragsverschillen (zie /integrations/tcpdf-compat/method-coverage/).

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

Dit lost nextpdf/core ^3.0 transitief op. Voor alle vereisten en een verificatiecontrole, zie /integrations/tcpdf-compat/install/.

Het pakket registreert geen globals tijdens het autoladen. Het requiren ervan maakt geen globale \TCPDF aan. U bepaalt hoe aanroeplocaties de klasse oplossen:

  • Voorkeur (expliciete imports). Pas in elk bestand de use-/require-regels aan naar use NextPDF\Compat\Tcpdf\TCPDF;. Dit is ondubbelzinnig en eenvoudig te doorzoeken.
  • Optionele globale aliassen. Roep LegacyBootstrap::enableAliases() eenmaal aan tijdens boot om \TCPDF en de vier helperklassen te registreren — alleen als die namen nog niet in gebruik zijn. Het mechanisme, de idempotentie en de conflictregel met de echte TCPDF: /integrations/tcpdf-compat/boot-and-discovery/.
examples/integration-boot.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\LegacyBootstrap;
// One call at application bootstrap, before any \TCPDF use.
LegacyBootstrap::enableAliases();

Het pakket bevat geen framework-serviceprovider of bundle. U beheert de dunne integratielaag zelf. Bind een factory die voor elk document een nieuwe adapter retourneert — nooit een gedeelde singleton, omdat elke instantie een eigen documentstatus heeft (zie /integrations/tcpdf-compat/production-usage/ § Concurrency).

examples/integration-container.php
<?php
declare(strict_types=1);
use NextPDF\Compat\Tcpdf\TCPDF;
use Psr\Container\ContainerInterface;
// Pseudocode for a PSR-11-style container: bind a factory, not a shared instance.
$container->set(TCPDF::class, static function (ContainerInterface $c): TCPDF {
return new TCPDF('P', 'mm', 'A4');
});
// Each resolution is an independent document context.
$pdf = $container->get(TCPDF::class);

Registreer de factory in Symfony als een niet-gedeelde service. Gebruik in Laravel bind (niet singleton) zodat elke resolutie een nieuwe instantie krijgt. Het pakket zelf blijft framework-agnostisch.

Er is geen publiceerbaar frameworkconfiguratiebestand. Configureer de adapter via de verouderde K_*- / PDF_*-constanten (definieer deze in uw bootstrap vóór de eerste constructie) of via het moderne, onveranderlijke NextPDF\Compat\Tcpdf\Config\AdaptationConfig-object. Zie /integrations/tcpdf-compat/configuration/.

Controleer na het koppelen of de integratie een geldig Portable Document Format (PDF)-bestand produceert. Dit weerspiegelt het oppervlak dat tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php assert:

examples/integration-smoke.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, 'Integration smoke test');
$bytes = $pdf->Output('smoke.pdf', 'S');
assert(str_starts_with($bytes, '%PDF'), 'Integration smoke test failed');
echo "Integration OK\n";

Gebruik in een Hypertext Transfer Protocol (HTTP)- of workercontext Output(..., 'F') of 'S'. Vertrouw niet op het inline-pad. Voor alle operationele richtlijnen, zie /integrations/tcpdf-compat/production-usage/.

ToegangspuntDoel
NextPDF\Compat\Tcpdf\TCPDFTCPDF-compatibele facade. Construeer er één per document.
TCPDF::getDocument()Retourneert het ingepakte NextPDF\Core\Document — de moderne API-ontsnappingsroute.
TCPDF::setStrictMode(bool)Schakelaar voor migratie-audit (zie /integrations/tcpdf-compat/configuration/).
NextPDF\Compat\Tcpdf\LegacyBootstrap::enableAliases()Optionele globale klasse-aliassen.
NextPDF\Compat\Tcpdf\Config\AdaptationConfigModern onveranderlijk configuratieobject.
NextPDF\Compat\Contracts\CompatAdapterInterfaceGedeeld compat-contract.

De gezaghebbende, test-geverifieerde dekkingsmatrix staat in het bestand docs/TCPDF_COVERAGE.md in de repository. De samenvatting voor lezers — methoden die zijn gespiegeld, stilzwijgend genegeerd, niet geïmplementeerd of niet van toepassing zijn — staat op /integrations/tcpdf-compat/method-coverage/. Noem het geen „drop-in-vervanging” of „compatibele (niet byte-identical) implementatie”. Beschrijf het als een TCPDF-compatibel alternatief met een bekend, getest oppervlak en gedocumenteerde gedragsverschillen.

  • docs/TCPDF_COVERAGE.md — gezaghebbende dekkingsbron in de repository
  • /integrations/tcpdf-compat/boot-and-discovery/ — blootstelling van de facade en aliasgedrag
  • /integrations/tcpdf-compat/method-coverage/ — gedrag en hiaten per methode
  • /integrations/tcpdf-compat/migration/ — gefaseerde migratiestrategie
  • /integrations/tcpdf-compat/production-usage/ — hoe u de adapter onder belasting gebruikt
  • tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php — oracle voor uitvoergedrag