NextPDF compat-legacy-integratie
In een oogopslag
Sectie met titel “In een oogopslag”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/).
Installeren
Sectie met titel “Installeren”composer require nextpdf/compat-legacy:^3.0Dit lost nextpdf/core ^3.0 transitief op. Voor alle vereisten en een verificatiecontrole, zie /integrations/tcpdf-compat/install/.
Boot en auto-discovery
Sectie met titel “Boot en auto-discovery”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 naaruse NextPDF\Compat\Tcpdf\TCPDF;. Dit is ondubbelzinnig en eenvoudig te doorzoeken. - Optionele globale aliassen. Roep
LegacyBootstrap::enableAliases()eenmaal aan tijdens boot om\TCPDFen 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/.
<?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();Containerbindingen
Sectie met titel “Containerbindingen”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).
<?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.
Configuratie publiceren
Sectie met titel “Configuratie publiceren”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/.
Smoketest voor serviceprovider / bundle
Sectie met titel “Smoketest voor serviceprovider / bundle”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:
<?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/.
Openbare API-toegangspunten
Sectie met titel “Openbare API-toegangspunten”| Toegangspunt | Doel |
|---|---|
NextPDF\Compat\Tcpdf\TCPDF | TCPDF-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\AdaptationConfig | Modern onveranderlijk configuratieobject. |
NextPDF\Compat\Contracts\CompatAdapterInterface | Gedeeld compat-contract. |
TCPDF-API-dekking
Sectie met titel “TCPDF-API-dekking”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.
Zie ook
Sectie met titel “Zie ook”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