Salta ai contenuti

Configurazione del pacchetto Laravel NextPDF

config/nextpdf.php viene pubblicato con php artisan vendor:publish --tag=nextpdf-config. Ogni chiave prevede un fallback tramite variabile d’ambiente e un valore predefinito codificato direttamente. Questa pagina documenta ogni chiave esattamente come appare nel file config/nextpdf.php del pacchetto.

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

Il provider unisce inoltre i valori predefiniti del pacchetto sotto la chiave di configurazione nextpdf durante register(). Le chiavi non impostate ricadono quindi sui valori riportati di seguito anche prima della pubblicazione.

La maggior parte delle variabili d’ambiente accetta un nome NEXTPDF_* oppure uno legacy TCPDF_*. Il prefisso legacy è supportato durante il periodo di transizione documentato in UPGRADE.md; le nuove installazioni devono usare la forma NEXTPDF_*. Il file di configurazione risolve i valori secondo questo ordine: variabile d’ambiente → valore del file pubblicato → valore predefinito del pacchetto.

ChiaveEnv (primaria)PredefinitoEffetto
page_formatNEXTPDF_PAGE_FORMATA4Formato di pagina predefinito (A4, A3, A5, Letter, Legal, Tabloid)
orientationNEXTPDF_ORIENTATIONPVerticale (P) o orizzontale (L)
unitNEXTPDF_UNITmmUnità di misura (pt, mm, cm, in)
defaults.creatorNEXTPDF_CREATORNextPDFMetadati del creatore del documento; applicati al binding PdfDocumentInterface del documento
defaults.authorNEXTPDF_AUTHOR(vuoto)Metadati dell’autore; applicati solo se non vuoti
defaults.languageNEXTPDF_LANGenLingua del documento; applicata al binding del documento
defaults.margin_top / _right / _bottom / _left10Margini predefiniti
defaults.font_familydejavusansFamiglia di font predefinita
defaults.font_size12Dimensione del font predefinita
defaults.trim_boxnullTrimBox [left, bottom, right, top] in punti, oppure null
defaults.bleed_boxnullBleedBox [left, bottom, right, top] in punti, oppure null

Il provider applica defaults.creator, defaults.language e (quando impostato) defaults.author a ogni documento appena risolto. Il ramo relativo a defaults.author viene saltato quando il valore è vuoto.

ChiaveEnv (primaria)PredefinitoEffetto
pdfaNEXTPDF_PDFAnullLivello di archiviazione PDF/A (null, 4, 4e, 4f). Un valore diverso da null abilita PDF/A sul binding del documento e richiede nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Directory per font TrueType aggiuntivi; controlla il percorso di ricerca del registro dei font
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Directory per la cache dei font analizzati e dei file temporanei
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullPercorso del profilo ICC RGB; obbligatorio per PDF/A
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullProfilo ICC CMYK opzionale per i flussi di lavoro di stampa
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueUsare flock sulla cache dei font per prevenire la corruzione quando worker di coda concorrenti vi scrivono

Impostare pdfa su un valore diverso da null richiede il livello Premium. Senza nextpdf/premium, la risoluzione del binding del documento con pdfa impostato solleva un errore di classe non trovata per il tipo di versione PDF/A. Questa pagina non descrive il comportamento di archiviazione Premium; consultare la documentazione Premium.

ChiaveEnv (primaria)PredefinitoEffetto
preload_fonts[]Elenco dei percorsi assoluti dei file di font analizzati all’avvio del worker. Il registro dei font viene bloccato dopo il warmup
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50Budget della cache LRU delle immagini in MB. 0 disabilita la cache. Il provider non impone alcun limite superiore

Il provider non impone alcun limite superiore al budget della cache immagini. Applicare un limite di memoria del container o php.inimemory_limit per contenerlo. Il file di configurazione consiglia un massimo pratico di 256 MB.

ChiaveEnv (primaria)PredefinitoEffetto
signature.enabledNEXTPDF_SIGN_ENABLEDfalseQuando vale false (o il certificato è vuoto), SignerInterface si risolve in null
signature.certificateNEXTPDF_SIGN_CERTnullPercorso del certificato di firma
signature.private_keyNEXTPDF_SIGN_KEYnullPercorso della chiave privata
signature.passwordNEXTPDF_SIGN_PASSWORD(vuoto)Passphrase della chiave
signature.extra_certs[]Percorsi dei certificati delle CA intermedie
signature.levelNEXTPDF_SIGN_LEVELB-BLivello baseline PAdES passato al signer

Il pacchetto Core documentato qui non include un signer concreto; il binding SignerInterface si risolve in null finché nextpdf/premium non fornisce un signer. Con Premium, level: B-B produce una firma baseline PAdES B-B. I livelli baseline PAdES superiori dipendono da un’autorità di marca temporale configurata e dalla funzionalità Premium; questa pagina non documenta tali livelli.

ChiaveEnv (primaria)PredefinitoEffetto
tsa.urlNEXTPDF_TSA_URLnullEndpoint TSA. Se è vuoto, TsaClient si risolve in null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(vuoto)Credenziali HTTP per la TSA
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullCertificato / chiave client per mTLS verso la TSA
tsa.timeoutNEXTPDF_TSA_TIMEOUT30Timeout HTTP in secondi per il client PSR-18
tsa.pinned_public_keys[]Pin SPKI SHA-256 in Base64 (RFC 7469). Un valore vuoto disabilita il pinning
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueEmette un avviso quando la TSA presenta uno SPKI non incluso nei pin
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseConsente HTTP in chiaro verso la TSA. Mantenere false in produzione
ChiaveEnv (primaria)PredefinitoEffetto
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueMemorizza in cache le risposte OCSP durante la convalida
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400TTL della cache in secondi
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullDirectory della cache; null mantiene la cache solo in memoria
ChiaveEnv (primaria)PredefinitoEffetto
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullConnessione della coda; null usa la connessione predefinita
queue.queueNEXTPDF_QUEUE_NAMEpdfNome della coda a cui viene inviato GeneratePdfJob
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120Timeout del job in secondi
ChiaveEnv (primaria)PredefinitoEffetto
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYvalore env o non impostatoPercorso del binario Chrome/Chromium
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Timeout di rendering in secondi
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(vuoto)CSS predefinito iniettato nell’HTML renderizzato
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseDisabilita la sandbox di Chrome
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Dimensione massima dell’input HTML in byte

La sezione artisan viene applicata al binding del documento solo se è presente una classe browser-factory di Chrome (l’estensione nextpdf/artisan). Se è assente, la sezione viene ignorata.

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 con signature.certificate vuoto porta comunque alla risoluzione di SignerInterface in null; entrambi devono essere impostati.
  • tsa.url = null forza TsaClient a null, anche se altre chiavi tsa.* sono popolate.
  • signature.level = null fa fallback a PAdES B-B sul signer.
  • image_cache_mb impostato su null (non 0) ricade sul valore predefinito di 50 MB; 0 disabilita esplicitamente la cache.
  • Le variabili d’ambiente legacy TCPDF_* rimangono leggibili ma sono deprecate; eseguire la migrazione a NEXTPDF_*.

La lettura della configurazione è un accesso O(1) a un array. preload_fonts scambia un’analisi una tantum O(f) all’avvio del worker con una latenza più bassa alla prima richiesta. Un valore più grande di image_cache_mb riduce la decodifica ripetuta delle immagini al costo di una maggiore memoria residente nel processo.

tsa.allow_insecure_http indebolisce l’attendibilità della marca temporale e deve rimanere false in produzione. Gli URL TSA devono provenire esclusivamente da configurazioni attendibili; se sono esposti tramite un’interfaccia di amministrazione, applicare un firewall in uscita o un criterio DNS per mitigare la falsificazione delle richieste. Vedere /integrations/laravel/security-and-operations/.

Nessuno standard normativo disciplina la struttura del file di configurazione; tutte le chiavi sono verificate rispetto al file config/nextpdf.php del pacchetto nella revisione documentata. La semantica dei livelli di firma è regolata da Premium ed esula dall’ambito di questa pagina Core.

Le sezioni signature e tsa controllano la firma Premium quando è installato nextpdf/premium. Si tratta di una funzionalità Enterprise opzionale; il pacchetto Core documentato qui non richiede alcuna modifica al codice per adottarla. Vedere https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/install/ — pubblicazione del file di configurazione
  • /integrations/laravel/production-usage/ — configurazione applicata in un controller reale
  • /integrations/laravel/security-and-operations/ — messa in sicurezza delle impostazioni della TSA e della coda
  • /integrations/laravel/boot-and-discovery/ — quale binding è controllato da ciascuna chiave