Overzicht van de NextPDF Symfony-integratie
In één oogopslag
Sectie met titel “In één oogopslag”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.
Wat de bundle biedt
Sectie met titel “Wat de bundle biedt”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 bundle —
NextPDF\Symfony\NextPdfBundlebreidt de Symfony-basisklasseBundleuit en registreert één compiler pass. - Een dependency-injection-extensie —
NextPDF\Symfony\DependencyInjection\NextPdfExtensionlaadt de servicedefinities, zet de configuratieboom om in containerparameters en stelt de configuratiealiasnextpdfbeschikbaar. - Een getypeerde configuratieboom —
NextPDF\Symfony\DependencyInjection\Configurationdefinieert hetnextpdf-configuratieschema. Deze valideert enumwaarden, stelt standaardwaarden in en gebruikt%kernel.*%-parameterplaceholders. - Een injecteerbare documentfabriek —
NextPDF\Symfony\Service\PdfFactoryproduceert nieuwe, voorgeconfigureerdeNextPDF\Core\Documentinstances. De service is het Symfony-equivalent van een statische facade. - HTTP-responsehulpfuncties —
NextPDF\Symfony\Http\PdfResponsebouwt inline-, download- en gestreamde responses met een vaste set securityheaders die aansluiten op het Open Worldwide Application Security Project (OWASP). - Een asynchroon generatiepad —
NextPDF\Symfony\Message\GeneratePdfMessage,NextPDF\Symfony\Message\GeneratePdfHandlerenNextPDF\Symfony\Message\PdfBuilderInterfaceintegreren met Symfony Messenger, zodat PDF-weergave in een worker kan draaien. - Een extensiedetector tijdens het compileren —
NextPDF\Symfony\DependencyInjection\Compiler\OptionalExtensionPassdetecteert optionele NextPDF-extensies en registreert hun services alleen wanneer die extensies aanwezig zijn.
Containercontract
Sectie met titel “Containercontract”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.
Optionele logging
Sectie met titel “Optionele logging”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).
Core versus optionele mogelijkheden
Sectie met titel “Core versus optionele mogelijkheden”De bundle zelf is Apache-2.0-core-software. Enkele mogelijkheden verschijnen alleen wanneer u een optioneel pakket naast de bundle installeert:
| Mogelijkheid | Vereist | Detectie |
|---|---|---|
PDF-generatie, PdfFactory, PdfResponse | alleen core | altijd beschikbaar |
| Asynchrone generatie | symfony/messenger | handler wordt geactiveerd wanneer Messenger is geïnstalleerd |
| Chrome DevTools Protocol (CDP)-HTML-weergave | nextpdf/artisan | class_exists-controle tijdens compileren |
| PDF/A-archivering, digitale handtekeningen | nextpdf/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.
Wanneer u deze bundle gebruikt
Sectie met titel “Wanneer u deze bundle gebruikt”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.
Conformiteit
Sectie met titel “Conformiteit”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.
| Spec | Clausule | reference_id | Claim |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p3.b | Contract voor de retourwaarde van container-get() | |
| PSR-3 | psr_3_logger#x3.p17 | LoggerInterface als optionele afhankelijkheid |
Commerciële context
Sectie met titel “Commerciële context”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>.
Zie ook
Sectie met titel “Zie ook”- /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.