Ga naar inhoud

Het NextPDF-pakket voor Laravel configureren

config/nextpdf.php wordt gepubliceerd door php artisan vendor:publish --tag=nextpdf-config. Elke sleutel valt terug op een omgevingsvariabele en een hardgecodeerde standaardwaarde. Deze pagina vermeldt elke sleutel zoals die in de config/nextpdf.php van het pakket voorkomt.

Terminal window
php artisan vendor:publish --tag=nextpdf-config

Tijdens register() voegt de provider ook de standaardwaarden van het pakket toe onder de configuratiesleutel nextpdf. Niet-ingestelde sleutels vallen dan terug op de onderstaande waarden, zelfs voordat je het configuratiebestand publiceert.

De meeste omgevingsvariabelen accepteren een NEXTPDF_*-naam of een verouderde TCPDF_*-naam. Het verouderde voorvoegsel blijft beschikbaar tijdens de overgangsperiode die in UPGRADE.md wordt beschreven. Gebruik NEXTPDF_* voor nieuwe implementaties. Het configuratiebestand bepaalt waarden in deze volgorde: omgevingsvariabele → waarde in het gepubliceerde bestand → standaardwaarde van het pakket.

SleutelEnv (primair)StandaardEffect
page_formatNEXTPDF_PAGE_FORMATA4Standaardpaginaformaat: A4, A3, A5, Letter, Legal of Tabloid
orientationNEXTPDF_ORIENTATIONPStaand (P) of liggend (L)
unitNEXTPDF_UNITmmMaateenheid: pt, mm, cm of in
defaults.creatorNEXTPDF_CREATORNextPDFMetadata van de documentmaker; toegepast op de PdfDocumentInterface-binding
defaults.authorNEXTPDF_AUTHOR(leeg)Metadata van de auteur; alleen toegepast wanneer niet leeg
defaults.languageNEXTPDF_LANGenDocumenttaal; toegepast op de documentbinding
defaults.margin_top / _right / _bottom / _left10Standaardmarges
defaults.font_familydejavusansStandaardlettertypefamilie
defaults.font_size12Standaardtekengrootte
defaults.trim_boxnullTrimBox [left, bottom, right, top] in punten, of null
defaults.bleed_boxnullBleedBox [left, bottom, right, top] in punten, of null

De provider past defaults.creator, defaults.language en (indien ingesteld) defaults.author toe op elk nieuw opgelost document. De provider slaat defaults.author over wanneer de waarde leeg is.

SleutelEnv (primair)StandaardEffect
pdfaNEXTPDF_PDFAnullPDF/A-archiveringsniveau: null, 4, 4e of 4f. Een niet-null-waarde schakelt PDF/A in op de documentbinding en vereist nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Map voor aanvullende TrueType-lettertypen; stelt het zoekpad van het lettertyperegister in
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Cachemap voor geparseerde lettertypen en tijdelijke bestanden
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullPad naar het RGB-ICC-profiel; vereist voor PDF/A
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullOptioneel CMYK-ICC-profiel voor afdrukworkflows
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueGebruikt flock voor de lettertypecache om corruptie te voorkomen wanneer gelijktijdige queue-workers schrijven

Een niet-null-waarde voor pdfa vereist het Premium-niveau. Zonder nextpdf/premium veroorzaakt het oplossen van de documentbinding met pdfa ingesteld een class-not-found-fout voor het PDF/A-versietype. Deze pagina documenteert het Premium-archiveringsgedrag niet. Raadpleeg de Premium-documentatie.

SleutelEnv (primair)StandaardEffect
preload_fonts[]Absolute paden naar lettertypebestanden die bij het opstarten van de worker worden geparseerd. Na de warming-up wordt het lettertyperegister vergrendeld
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50Budget voor de least recently used (LRU) afbeeldingscache in megabytes (MB). 0 schakelt caching uit. Op providerniveau wordt geen bovengrens afgedwongen

Het budget voor de afbeeldingscache heeft geen door de provider afgedwongen bovengrens. Gebruik een geheugenlimiet op containerniveau of php.inimemory_limit om het te beperken. Het configuratiebestand beveelt een praktisch maximum van 256 MB aan.

SleutelEnv (primair)StandaardEffect
signature.enabledNEXTPDF_SIGN_ENABLEDfalseWanneer dit false is, of wanneer het certificaat leeg is, lost SignerInterface op naar null
signature.certificateNEXTPDF_SIGN_CERTnullPad naar het ondertekeningscertificaat
signature.private_keyNEXTPDF_SIGN_KEYnullPad naar de privésleutel
signature.passwordNEXTPDF_SIGN_PASSWORD(leeg)Wachtwoordzin voor de sleutel
signature.extra_certs[]Paden naar tussenliggende CA-certificaten
signature.levelNEXTPDF_SIGN_LEVELB-BBaseline-niveau voor PDF Advanced Electronic Signatures (PAdES) dat aan de ondertekenaar wordt doorgegeven

Het hier gedocumenteerde Core-pakket bevat geen ondertekenaarimplementatie; SignerInterface lost op naar null totdat nextpdf/premium er een levert. Met Premium produceert level: B-B een PAdES B-B-baselinehandtekening. Hogere PAdES-baselines zijn afhankelijk van een geconfigureerde tijdstempelautoriteit en Premium-functionaliteit; deze pagina documenteert die niveaus niet.

SleutelEnv (primair)StandaardEffect
tsa.urlNEXTPDF_TSA_URLnullEndpoint van de tijdstempelautoriteit (TSA). Wanneer dit leeg is, lost TsaClient op naar null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(leeg)HTTP-inloggegevens voor de TSA
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullClientcertificaat / sleutel voor wederzijdse Transport Layer Security (mTLS) naar de TSA
tsa.timeoutNEXTPDF_TSA_TIMEOUT30HTTP-time-out in seconden voor de PSR-18-client
tsa.pinned_public_keys[]Base64-SHA-256-SubjectPublicKeyInfo (SPKI)-pins (RFC 7469). Leeg schakelt pinning uit
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueGeeft een waarschuwing wanneer de TSA een niet-gepinde SPKI presenteert
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseStaat platte HTTP naar de TSA toe. Laat dit in productie op false staan
SleutelEnv (primair)StandaardEffect
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueCache de responsen van het Online Certificate Status Protocol (OCSP) tijdens validatie
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400Cache-TTL in seconden
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullCachemap; null houdt de cache alleen in het geheugen
SleutelEnv (primair)StandaardEffect
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullQueue-verbinding; null gebruikt de standaardverbinding
queue.queueNEXTPDF_QUEUE_NAMEpdfQueue waarnaar GeneratePdfJob wordt gepusht
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120Time-out per taak in seconden
SleutelEnv (primair)StandaardEffect
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYenv-waarde of niet ingesteldPad naar het binaire bestand van Chrome/Chromium
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Render-time-out in seconden
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(leeg)Standaard-CSS die in de gerenderde HTML wordt geïnjecteerd
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseSchakelt de Chrome-sandbox uit
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Maximale grootte van de HTML-invoer in bytes

De sectie artisan is alleen van toepassing op de documentbinding wanneer een Chrome-browser-factoryklasse aanwezig is (de nextpdf/artisan-extensie). Als die klasse ontbreekt, wordt de sectie genegeerd.

resource: config/nextpdf.php (subset, verified against the published file)
<?php
declare(strict_types=1);
return [
'page_format' => env('NEXTPDF_PAGE_FORMAT', 'A4'),
'orientation' => env('NEXTPDF_ORIENTATION', 'P'),
'unit' => env('NEXTPDF_UNIT', 'mm'),
'pdfa' => env('NEXTPDF_PDFA', null),
'fonts_path' => env('NEXTPDF_FONTS_PATH', resource_path('fonts')),
'preload_fonts' => [],
'image_cache_mb' => env('NEXTPDF_IMAGE_CACHE_MB', 50),
'queue' => [
'connection' => env('NEXTPDF_QUEUE_CONNECTION', null),
'queue' => env('NEXTPDF_QUEUE_NAME', 'pdf'),
'timeout' => env('NEXTPDF_QUEUE_TIMEOUT', 120),
],
];
  • signature.enabled = true met een leeg signature.certificate lost SignerInterface nog steeds op naar null; beide waarden moeten worden ingesteld.
  • tsa.url = null dwingt TsaClient naar null, zelfs als andere tsa.*-sleutels zijn ingevuld.
  • signature.level = null valt terug op PAdES B-B bij de ondertekenaar.
  • image_cache_mb ingesteld op null (niet 0) valt terug op de standaardwaarde van 50 MB; 0 schakelt caching expliciet uit.
  • Verouderde TCPDF_*-omgevingsvariabelen blijven leesbaar maar zijn afgeschaft. Migreer naar NEXTPDF_*.

Het lezen van de configuratie gebruikt arraytoegang met O(1). preload_fonts ruilt een eenmalige O(f)-parse bij het opstarten van de worker in voor lagere latentie bij het eerste verzoek. Een grotere image_cache_mb vermindert herhaald decoderen van afbeeldingen ten koste van het procesresidente geheugen.

tsa.allow_insecure_http verzwakt het vertrouwen in tijdstempels en moet in productie false blijven. TSA-URL’s mogen alleen afkomstig zijn uit vertrouwde configuratie. Als je ze via een beheerdersinterface blootstelt, gebruik dan een egress-firewall of DNS-beleid om request forgery te beperken. Zie /integrations/laravel/security-and-operations/.

Geen normatieve standaard bepaalt de vorm van het configuratiebestand. Alle sleutels zijn geverifieerd ten opzichte van de config/nextpdf.php van het pakket bij de gedocumenteerde revisie. Premium bepaalt de semantiek van het handtekeningniveau, die buiten de reikwijdte van deze Core-pagina valt.

De secties signature en tsa sturen het ondertekenen met Premium aan wanneer nextpdf/premium is geïnstalleerd. Deze optionele Enterprise-functionaliteit vereist geen codewijzigingen in het Core-pakket. Zie https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/install/ — publiceer het configuratiebestand
  • /integrations/laravel/production-usage/ — zie de configuratie toegepast in een echte controller
  • /integrations/laravel/security-and-operations/ — verstevig de TSA- en queue-instellingen
  • /integrations/laravel/boot-and-discovery/ — zie welke binding elke sleutel aanstuurt