Het CodeIgniter-pakket biedt servicefactory’s, helperfuncties en een kleine wrapper rond de Pdf-library voor één Portable Document Format-document (PDF). Gebruik de wrapper in controllers. Wachtrijverwerking gebruikt statische builder-callables, omdat CodeIgniter-wachtrijpayloads geserialiseerde data moeten zijn.
Gebruik deze gids voor het ontwerpen van controllerstromen, services, wachtrijbuilders en tests rond nextpdf/codeigniter.
Laag Beheerd door Verantwoordelijkheid Hier niet plaatsen Controller Applicatie Autoriseer, roep een builder of service aan en retourneer een DownloadResponse. Gedeelde lay-outlogica. Librarywrapper nextpdf/codeigniterWrap één Document en bied helpers voor responses en opslag. Langdurige documentopslag. Servicefactory nextpdf/codeigniterMaak gedeelde registry’s en nieuwe documenten. Bedrijfsspecifieke opslagroots. Wachtrijbuilder Applicatie Bouw een document op vanuit statische callable-invoer. Request-objecten of status die niet geserialiseerd kunnen worden. Core-engine nextpdf/nextpdfBouw en serialiseer de PDF. CodeIgniter-respons of wachtrijbeleid.
Fase Gedrag Ontwikkelaarsactie Autoload-registratie Registrar::Autoload() registreert het laden van modulehelpers.Laad de module via de CodeIgniter-configuratie. Serviceresolutie Services::pdf() retourneert standaard een wrapper rond een nieuw document.Los de service één keer per request op. Opstellen Applicatiecode gebruikt Pdf::document() voor aanroepen op het core-document. Houd code voor het opbouwen van documenten in services of builders. Respons PdfResponse retourneert een DownloadResponse.Laat het pakket de PDF-headers instellen. Wachtrijuitvoering GeneratePdfJob::process() valideert de builder en het uitvoerpad en slaat het document vervolgens op.Plaats wachtrijbuilders onder App\PdfBuilders.
Pad Doel app/PdfBuilders/*Statische, wachtrijveilige builders die door GeneratePdfJob worden geaccepteerd. app/Libraries/*Optionele applicatiewrappers rond herhaalde documentworkflows. app/Services/*Ophalen van domeingegevens en opslagbeleid. app/Config/NextPdf.phpApplicatieoverschrijvingen voor de pakketconfiguratie. tests/app/PdfBuilders/*Tests voor builders en wachtrijpayloads.
Gebruik pakkethelpers voor korte stromen. Gebruik expliciete service-aanroepen wanneer documentconstructie thuishoort in een klasse die je rechtstreeks kunt testen.
namespace App\Controllers;
final class InvoiceController extends BaseController
public function download ( int $id )
-> setTitle ( ' Invoice ' . $id )
-> writeHtml ( ' <h1>Invoice ' . $id . ' </h1> ' );
return $pdf -> download ( ' invoice- ' . $id . ' .pdf ' );
Wachtrijbuilders moeten statisch en deterministisch zijn en zich onder App\PdfBuilders bevinden. Houd de context-array eenvoudig genoeg om te serialiseren en te auditen.
namespace App\PdfBuilders;
use NextPDF\Core\ Document ;
final class InvoiceBuilder
public static function build ( Document $document , array $context ) : Document
$document -> setTitle (( string ) $context [ ' title ' ])
-> writeHtml (( string ) $context [ ' html ' ]);
De job beperkt de uitvoer tot de geconfigureerde PDF-map van de applicatie. Als je applicatie tenant-specifieke opslag nodig heeft, plaats dat beleid dan in één service en test het voordat je de job verzendt.
Uitbreidingspunt Gebruik dit voor Beperking Services::pdfDocument()Pas het aanmaken van documenten aan. Moet een nieuw document retourneren. Services::fontRegistry()Warm lettertypen op en gebruik de registry. Wijs onveilige paden af en houd de registry vergrendeld na het opwarmen. Services::pdfSigner()Schakel optionele digitale ondertekening in. Retourneer null wanneer ondertekening is uitgeschakeld. NextPDF\CodeIgniter\Libraries\PdfWikkel controllergericht documentwerk in. Eén wrapper komt overeen met één document. App\PdfBuilders::*Wachtrijveilige documentbuilders. Statische callable-string vereist. app/Config/NextPdf.phpStandaardwaarden van de applicatie en integratie-instellingen. Houd productiewaarden expliciet.
Begin met een controller die pdf() of service('pdf') aanroept.
Verplaats herhaalde documentconstructie naar app/PdfBuilders of een applicatieservice.
Gebruik GeneratePdfJob wanneer het genereren te traag is voor het requestpad.
Houd de wachtrijcontext serialiseerbaar en klein.
Sla de uitvoer op onder de goedgekeurde PDF-opslagroot, tenzij je het beleid bewust uitbreidt.
Voeg tests toe voor helpers, services, wachtrijpayloads en onveilige paden.
Fout Waar het moet worden afgehandeld Aanbevolen respons Ontbrekende extensie of onveilig lettertypepad Servicefactory. Faal snel tijdens de serviceresolutie. Ongeldige builder-callable Validatie van de wachtrijjob. Wijs de job af en log de builder-string zonder geheimen. Onveilig uitvoerpad Opslagservice en wachtrijjob. Wijs af voordat je de job verzendt en behoud de jobvalidatie. Serialisatiefout in de respons Foutafhandeling in de controller of het framework. Verstuur geen gedeeltelijke responsbody. Optionele Premium-klasse niet beschikbaar Retourwaarde van de servicemethode. Handel null expliciet af voordat je optionele e-invoicefuncties gebruikt.
Aandachtspunt Standaard Wanneer overschrijven Namespace voor wachtrijbuilders App\PdfBuilders.Houd de standaard aan, tenzij je ook het beveiligingsbeleid bijwerkt. Uitvoerroot WRITEPATH/pdfs.Overschrijf alleen met een striktere allowlist. Bestandsnaam van de respons document.pdf.Gebruik opgeschoonde zakelijke bestandsnamen. Streammethoden Pariteit van de application programming interface (API) met andere frameworks. Vertrouw in CodeIgniter niet op streaming als geheugengrens. Documentservice Standaard een nieuw document. Vraag geen gedeelde documenten op vanuit requestcode.
Servicetests verifiëren dat elke Services::pdf()-resolutie een onafhankelijk document retourneert.
Helpertests verifiëren dat pdf() en pdf_document() nieuwe objecten retourneren.
Responstests verifiëren de headers en de normalisatie van bestandsnamen.
Wachtrijtests dekken ongeldige builder-strings en onveilige uitvoerpaden.
Buildertests gebruiken representatieve contextgegevens.
Configuratietests dekken het lettertypepad, het cachepad, uitgeschakelde ondertekening en de uitgeschakelde status van de Time-Stamp Authority (TSA).