Ga naar inhoud

Overzicht van de NextPDF Symfony-integratie

nextpdf/symfony is de officiële Symfony 7-bundle voor de NextPDF-engine. De bundle verbindt de engine met de Symfony-container en biedt een documentfabriek die u in uw eigen services kunt injecteren. Daarnaast bevat de bundle hulpfuncties voor Hypertext Transfer Protocol (HTTP)-responses en een manier om Portable Document Format (PDF)-bestanden asynchroon te genereren, zodat de verwerking op de achtergrond kan draaien.

NextPDF Symfony koppelt de nextpdf/core-engine als standaardbundle aan een Symfony-applicatie. De bundle voegt de volgende bouwstenen toe, elk geverifieerd aan de hand van de bundlebron in src/Symfony/:

  • Een toegangspunt voor de bundleNextPDF\Symfony\NextPdfBundle breidt de Symfony-basisklasse Bundle uit en registreert één compiler pass.
  • Een dependency-injection-extensieNextPDF\Symfony\DependencyInjection\NextPdfExtension laadt de servicedefinities, zet de configuratieboom om in containerparameters en stelt de configuratiealias nextpdf beschikbaar.
  • Een getypeerde configuratieboomNextPDF\Symfony\DependencyInjection\Configuration definieert het nextpdf-configuratieschema. Deze valideert enumwaarden, stelt standaardwaarden in en gebruikt %kernel.*%-parameterplaceholders.
  • Een injecteerbare documentfabriekNextPDF\Symfony\Service\PdfFactory produceert nieuwe, voorgeconfigureerde NextPDF\Core\Document instances. De service is het Symfony-equivalent van een statische facade.
  • HTTP-responsehulpfunctiesNextPDF\Symfony\Http\PdfResponse bouwt inline-, download- en gestreamde responses met een vaste set securityheaders die aansluiten op het Open Worldwide Application Security Project (OWASP).
  • Een asynchroon generatiepadNextPDF\Symfony\Message\GeneratePdfMessage, NextPDF\Symfony\Message\GeneratePdfHandler en NextPDF\Symfony\Message\PdfBuilderInterface integreren met Symfony Messenger, zodat PDF-weergave in een worker kan draaien.
  • Een extensiedetector tijdens het compilerenNextPDF\Symfony\DependencyInjection\Compiler\OptionalExtensionPass detecteert optionele NextPDF-extensies en registreert hun services alleen wanneer die extensies aanwezig zijn.

De bundle registreert een kleine, stabiele set publieke containerservices. De documentservice nextpdf.document (met als aliassen NextPDF\Contracts\PdfDocumentInterface en NextPDF\Core\Document) is niet gedeeld: elke resolutie levert een afzonderlijk, wegwerpbaar document op. Dit komt overeen met het containercontract van PHP Standard Recommendation 11 (PSR-11): twee opeenvolgende get()-aanroepen met dezelfde identifier kunnen verschillende waarden teruggeven, afhankelijk van de configuratie van de container — zie PSR-11 §1.1.2. De niet-gedeelde binding is bewust gekozen. Een document verzamelt per weergave zijn eigen state, dus een nieuwe instance per request voorkomt dat state tussen requests lekt in langdraaiende workers.

Het lettertyperegister (NextPDF\Contracts\FontRegistryInterface) heeft juist het omgekeerde gedrag: het is een gedeelde singleton. Het afbeeldingsregister draagt de tag kernel.reset, zodat de begrensde cache tussen requests wordt gewist in FrankenPHP- en Messenger-workers. De configuratiepagina documenteert de volledige service- en aliastabel.

Het lettertype- en afbeeldingsregister accepteren een optionele PHP Standard Recommendation 3 (PSR-3)-logger. De bundle bindt Psr\Log\LoggerInterface alleen wanneer de applicatie er een aanlevert (nullOnInvalid()). Logging is daarom een optionele samenwerkende component, geen harde afhankelijkheid. Dit sluit aan bij het PSR-3 logger-contract, waarin een logger een geïnjecteerde, verwisselbare component is (PSR-3).

De bundle zelf is Apache-2.0-core-software. Enkele mogelijkheden verschijnen alleen wanneer u een optioneel pakket naast de bundle installeert:

MogelijkheidVereistDetectie
PDF-generatie, PdfFactory, PdfResponsealleen corealtijd beschikbaar
Asynchrone generatiesymfony/messengerhandler wordt geactiveerd wanneer Messenger is geïnstalleerd
Chrome DevTools Protocol (CDP)-HTML-weergavenextpdf/artisanclass_exists-controle tijdens compileren
PDF/A-archivering, digitale handtekeningennextpdf/premium (installeert Pro)class_exists-controle tijdens compileren

Wanneer nextpdf/premium is geïnstalleerd, kan de bundle een baseline PDF Advanced Electronic Signatures (PAdES) B-B-handtekeningconfiguratie toepassen. Hogere handtekeningprofielen vallen buiten de scope van de documentatie van deze bundle. Raadpleeg voor de editiematrix de documentatie van NextPDF Premium.

Gebruik nextpdf/symfony wanneer u PDF’s bouwt binnen een Symfony 7 HTTP-applicatie of -worker. De bundle biedt door de container beheerde services, worker-veilige registers en veilige downloadresponses, zodat u de engine niet handmatig hoeft te bedraden. Als u alleen eenmalige generatie in een script nodig hebt, volstaat het core-pakket nextpdf/core op zichzelf.

Elke rij is een normatieve claim die op deze pagina wordt gedaan en is gekoppeld aan een volledige 64-hex reference_id uit het afgeschermde corpus van de standards development organization (SDO). De herkomst (corpus-manifest, retrieval-transport) staat in _sidecars/rag-citations.yaml.

SpecClausulereference_idClaim
PSR-11psr_11_container#1.1.2.p3.bContract voor de retourwaarde van container-get()
PSR-3psr_3_logger#x3.p17LoggerInterface als optionele afhankelijkheid

Digitale handtekeningen en PDF/A-archivering komen beschikbaar wanneer nextpdf/premium (Pro) naast de bundle is geïnstalleerd. Deze optionele Pro-mogelijkheid vereist geen codewijziging in de hier gedocumenteerde Core-bundle. Zie </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — installeer en registreer de bundle.
  • /integrations/symfony/configuration/ — de volledige nextpdf-configuratieboom en servicetabel.
  • /integrations/symfony/quickstart/ — een uitvoerbare controller en een async-voorbeeld.
  • /integrations/symfony/boot-and-discovery/ — hoe Symfony de bundle ontdekt en opstart.
  • /integrations/symfony/production-usage/ — worker-veiligheid, streaming en async-patronen.