NextPDF Symfony-integratie
In één oogopslag
Sectie met titel “In één oogopslag”Installeer nextpdf/symfony, laat Flex de bundle registreren of registreer deze zelf, voeg config/packages/nextpdf.yaml toe en injecteer PdfFactory. Gebruik deze pagina als overzicht van de bedrading. Elke stap verwijst naar een uitgebreidere handleiding.
Installeren
Sectie met titel “Installeren”composer require nextpdf/symfonyDe bundle vereist nextpdf/core^3.0 || ^5.2, symfony/*^7.2 en
psr/log^3.0. Klassen worden automatisch geladen via het PSR-4-prefix NextPDF\Symfony\, dat aan src/Symfony/ is toegewezen. Een PSR-4-autoloader koppelt dat namespace-prefix aan de basismap (PSR-4 §2). Zie /integrations/symfony/install/ voor de volledige vereisten en optionele pakketten.
Booten en automatische detectie
Sectie met titel “Booten en automatische detectie”Met Symfony Flex registreert de vermelding extra.symfony.bundles in de composer.json van de bundle NextPDF\Symfony\NextPdfBundle voor alle omgevingen. Zonder Flex voeg je deze zelf toe aan config/bundles.php:
return [ NextPDF\Symfony\NextPdfBundle::class => ['all' => true],];Zie /integrations/symfony/boot-and-discovery/ voor de volledige bootsequentie en het gedrag van de compiler pass.
Container-bindingen
Sectie met titel “Container-bindingen”Het bestand config/services.php van de bundle registreert deze services:
| Service / alias | Levenscyclus |
|---|---|
NextPDF\Symfony\Service\PdfFactory | gedeeld, publiek; injecteer deze |
nextpdf.document → PdfDocumentInterface → Document | niet-gedeeld, publiek; nieuw bij elke resolve |
NextPDF\Contracts\FontRegistryInterface | gedeeld, vergrendeld na warmup |
NextPDF\Graphics\ImageRegistry | gedeeld, kernel.reset |
NextPDF\Contracts\DocumentFactoryInterface | gedeeld |
NextPDF\Symfony\Http\PdfResponse | publieke, stateless helper |
De document-binding is bewust niet-gedeeld. PSR-11 staat toe dat een container bij opeenvolgende get()-aanroepen voor één identifier verschillende waarden teruggeeft. Een nieuw document voorkomt dat toestand tussen verzoeken blijft hangen in langlopende workers (PSR-11 §1.1.2). Zie /integrations/symfony/configuration/ voor de volledige service- en aliastabel, inclusief voorwaardelijke EInvoice-bindingen.
Configuratie publiceren
Sectie met titel “Configuratie publiceren”De configuratie-alias is nextpdf. Maak config/packages/nextpdf.yaml aan. Wanneer Flex een recipe publiceert, voegt het automatisch een standaardkopie voor je toe. Elke sleutel heeft een standaardwaarde, dus een minimaal bestand ziet er zo uit:
nextpdf: ~De volledige configuratieboom is gedocumenteerd in /integrations/symfony/configuration/.
Eerste gebruik
Sectie met titel “Eerste gebruik”Injecteer PdfFactory en retourneer vervolgens het document met PdfResponse:
<?php
declare(strict_types=1);
namespace App\Controller;
use NextPDF\Symfony\Http\PdfResponse;use NextPDF\Symfony\Service\PdfFactory;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Attribute\Route;
final class PdfController{ #[Route('/hello.pdf', name: 'hello_pdf')] public function hello(PdfFactory $pdf): Response { $doc = $pdf->create(); $doc->addPage(); $doc->cell(0, 10, 'Hello from NextPDF on Symfony.');
return PdfResponse::inline($doc, 'hello.pdf'); }}Zie /integrations/symfony/quickstart/ voor de end-to-end-controller en het asynchrone Messenger-pad.
Rooktest van de bundle
Sectie met titel “Rooktest van de bundle”Controleer de bedrading zonder applicatiecode te schrijven:
php bin/console debug:container nextpdfphp bin/console debug:config nextpdfphp bin/console lint:containerdebug:container nextpdf moet PdfFactory, de alias nextpdf.document en de registries tonen. lint:container controleert of elk service-argument wordt opgelost. Voeg de bovenstaande controller toe om de generatie te testen en vraag vervolgens /hello.pdf op.
Publieke API-entrypoints
Sectie met titel “Publieke API-entrypoints”Het API-oppervlak ondersteunt deze publieke symbolen voor applicatiecode:
| Symbool | Doel |
|---|---|
NextPDF\Symfony\Service\PdfFactory::create() | nieuw, vooraf geconfigureerd Document |
NextPDF\Symfony\Http\PdfResponse::inline() / download() | gebufferde response met beveiligingsheaders |
NextPDF\Symfony\Http\PdfResponse::streamInline() / streamDownload() | in chunks gestreamde response |
NextPDF\Symfony\Message\GeneratePdfMessage | data transfer object (DTO) voor asynchrone generatie (gevalideerd) |
NextPDF\Symfony\Message\PdfBuilderInterface | buildercontract dat door de handler wordt opgelost |
Conformiteit
Sectie met titel “Conformiteit”Elke rij vermeldt een normatieve bewering op deze pagina. Elke bewering is vastgepind aan een volledige 64-hex reference_id uit het afgeschermde corpus van de standards development organization (SDO). De herkomst (corpus-manifest en ophaaltransport) staat in _sidecars/rag-citations.yaml.
| Specificatie | Clausule | reference_id | Bewering |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p4 | Identifier-contract van container has()/get() | |
| PSR-4 | psr_4_autoload#x1.x2.p5 | Namespace-toewijzing van de autoloader |
Zie ook
Sectie met titel “Zie ook”- /integrations/symfony/install/ — vereisten en registratie.
- /integrations/symfony/boot-and-discovery/ — detectie, booten en compiler pass.
- /integrations/symfony/configuration/ — volledig schema en servicetabel.
- /integrations/symfony/quickstart/ — uitvoerbare controller en async-voorbeeld.
- /integrations/symfony/production-usage/ — workerveiligheid en streaming.