Ga naar inhoud

NextPDF compat-legacy: overzicht

nextpdf/compat-legacy is een TCPDF-compatibel alternatief: een compatibiliteitslaag die de publieke TCPDF 6.x-API beschikbaar maakt op de NextPDF Portable Document Format (PDF) 2.0-engine. Het pakket heeft één taak: bestaande code die afhankelijk is van TCPDF 6.x op de NextPDF-engine laten draaien zonder herschrijving, zodat je bestand voor bestand kunt migreren in plaats van alles in één keer.

Het is geen fork van TCPDF en ook geen gegarandeerde gedragskloon. Het is een onafhankelijke implementatie die de aanroephandtekeningen van TCPDF behoudt. De precieze afbakening is: het dekt 94 van de ongeveer 120 onderzochte TCPDF 6.x-methoden via directe delegatie, terwijl voor de overige methoden gedocumenteerde gedragsverschillen gelden (zie /integrations/tcpdf-compat/method-coverage/).

  • Een migratiehulpmiddel. Het pakket behoort tot de NextPDF-compatfamilie. Het helpt je weg te stappen van een verouderde PDF-bibliotheek; het is niet bedoeld als permanente afhankelijkheid. Zie het als steigerwerk dat je verwijdert naarmate je de moderne API in gebruik neemt.
  • Een adapter voor het API-oppervlak. Het biedt de TCPDF-klassenaam, methodenamen, parametervolgorde en de standaardwaarden van 6.2.13. Het delegeert aanroepen naar een NextPDF\Core\Document-instantie.
  • Een onafhankelijke, clean-room-implementatie. Dit pakket kopieert of vertaalt geen TCPDF-broncode, build-artefacten, lettertypegegevens of andere auteursrechtelijk beschermde uitingen. Het gebruikt de naam TCPDF alleen om interoperabiliteit aan te duiden. De canonieke verklaring staat in het NOTICE-bestand van het pakket.
  • Het is geen „drop-in-vervanging” met byte-identieke uitvoer. Bij gedelegeerde methoden is het zichtbare resultaat compatibel, maar de gegenereerde PDF-bytes verschillen, omdat daaronder een afzonderlijke, onafhankelijke PDF 2.0-implementatie draait.
  • Het is niet „100% TCPDF-compatibel”. Een welomschreven set methoden accepteert verouderde parameters die de engine niet honoreert, of doet helemaal niets. Deze methoden zijn opgesomd en getest — zie /integrations/tcpdf-compat/method-coverage/.
  • Het is op zichzelf geen ondertekenings- of archiveringsproduct. Digitale handtekeningen en PDF/A-archiveringsconformiteit zijn voorbehouden aan een commerciële NextPDF-editie. Deze documentatie doet geen uitspraken over gecertificeerde, gegarandeerde of juridisch geldige handtekeningen.

Het herschrijven van elke TCPDF-aanroep in een grote applicatie brengt risico met zich mee en is moeilijk stapsgewijs uit te leveren. Met de compatibiliteitslaag kun je:

  1. De afhankelijkheid vervangen en daarna je bestaande testsuite uitvoeren om te ontdekken wat ongewijzigd werkt.
  2. strict mode gebruiken als audit die elke plek opsomt waar TCPDF-gedrag niet exact kan worden gereproduceerd.
  3. Die aanroeplocaties één voor één migreren naar de moderne NextPDF-API, zodat de applicatie gedurende het hele traject uitleverbaar blijft.

Het einddoel is de moderne NextPDF\Core\Document-API, waarbij de compatibiliteitslaag is verwijderd. Zie /integrations/tcpdf-compat/migration/ voor de volledige strategie.

Wanneer de adapter een TCPDF-aanroep delegeert, draait die aanroep op een PDF 2.0-engine (ISO 32000-2), waar Advanced Encryption Standard (AES)-256-versleuteling via de standaardhandler beschikbaar is en de hele adapter PHPStan Level 10-typeveiligheid heeft. Uitvoer wordt altijd weggeschreven als PDF 2.0; de adapter kan niet terugschakelen naar oudere PDF-versies (zie /integrations/tcpdf-compat/method-coverage/ §4).

De adapter maakt verschillende historische gedragingen van TCPDF 6.2.13 veiliger:

Verouderd gedragAdaptergedrag
Error() roept die() aan en beëindigt het proces stilzwijgendError() werpt RuntimeException — waarneembaar en af te vangen
HTML-methode waarmee PHP vanuit markup kon worden uitgevoerdDie ontsnappingsroute is uitgeschakeld — markup kan geen PHP-uitvoering activeren
Output() geeft rechtstreeks uitvoer en kan de uitvoerbuffers van workers beschadigenUitvoer loopt via een veilige bestemmingsbrug
Onbeschermde header/footer-recursieBeveiligd tegen recursie

De compatibiliteitslaag wordt geleverd in de core-distributie (nextpdf/compat-legacy, die nextpdf/core ^3.0 vereist). Versleuteling via de standaardhandler is beschikbaar in core. Digitale handtekeningen en PDF/A-archiveringsconformiteit vereisen een commerciële NextPDF-editie; de adapter biedt de toegangspunten, maar het core-pad is geen ondertekeningsproduct. Zie /integrations/tcpdf-compat/security-and-operations/ voor de precieze verklaring.

  • /integrations/tcpdf-compat/install/ — installeer het pakket en controleer de enginekoppeling.
  • /integrations/tcpdf-compat/quickstart/ — maak een eerste uitvoerbaar document, onderbouwd met tests.
  • /integrations/tcpdf-compat/method-coverage/ — bekijk precies wat elke TCPDF-methode hier doet.
  • /integrations/tcpdf-compat/migration/ — plan de migratiestrategie bestand voor bestand.
  • /integrations/tcpdf-compat/configuration/ — configureer strict mode en adapterinstellingen.
  • /integrations/tcpdf-compat/production-usage/ — voer de adapter uit onder belasting en in workers.
  • /integrations/tcpdf-compat/security-and-operations/ — bekijk versleuteling, het standpunt over ondertekening en hardening.
  • /integrations/tcpdf-compat/troubleshooting/ — los veelvoorkomende migratieproblemen op.
  • /integrations/tcpdf-compat/integration/ / /integrations/tcpdf-compat/boot-and-discovery/ — koppel de facade aan een applicatie en registreer globale class-aliassen.
  • docs/TCPDF_COVERAGE.md — gezaghebbende dekkingsmatrix (in de repository)
  • Pakket NOTICE — verklaring over de onafhankelijke implementatie