Salta ai contenuti

Configurazione del bundle Symfony NextPDF

L’intero comportamento del bundle si configura sotto la chiave radice nextpdf in config/packages/nextpdf.yaml. Tutte le chiavi hanno un valore predefinito, quindi la configurazione è facoltativa. Questa pagina riflette esattamente Configuration.php.

Lo schema è definito da NextPDF\Symfony\DependencyInjection\Configuration. I valori non validi vengono rifiutati durante la compilazione del container con un’eccezione Symfony InvalidConfigurationException.

ChiaveTipoPredefinitoConvalida
page_formatenumA4uno tra A4, A3, A5, Letter, Legal, Tabloid
orientationenumPuno tra P, L
unitenummmuno tra pt, mm, cm, in
pdfascalarenulluno tra null, 4, 4e, 4f
fonts_pathscalare%kernel.project_dir%/resources/fonts
cache_pathscalare%kernel.cache_dir%/nextpdf
image_cache_mbintero50minimo 0
font_cache_lockingbooleanotrue
preload_fontselenco di stringhe[]
ChiaveTipoPredefinito
icc_profile.rgbscalarenull
icc_profile.cmykscalarenull

Si applica a ogni documento prodotto da PdfFactory.

ChiaveTipoPredefinito
defaults.creatorscalareNextPDF
defaults.authorscalare(vuoto)
defaults.languagescalareen
defaults.margin_topfloat10.0
defaults.margin_rightfloat10.0
defaults.margin_bottomfloat10.0
defaults.margin_leftfloat10.0
defaults.font_familyscalaredejavusans
defaults.font_sizefloat12.0
defaults.trim_boxvariabilenull
defaults.bleed_boxvariabilenull

PdfFactory legge creator, author e language da questa sezione e li applica a ogni nuovo documento. Le chiavi rimanenti vengono memorizzate come parametri del container per l’uso da parte del motore.

Ha effetto soltanto quando nextpdf/artisan è installato e rilevato.

ChiaveTipoPredefinito
artisan.chrome_binaryscalarenull
artisan.render_timeoutintero30
artisan.default_cssscalare(vuoto)
artisan.no_sandboxbooleanofalse
artisan.max_html_sizeintero5000000

Ha effetto soltanto quando nextpdf/premium è installato. Quando sono presenti il bundle e il livello Pro, la configurazione di firma supportata è il profilo baseline B-B. Il nodo level accetta i valori stringa elencati di seguito per compatibilità di schema con la famiglia più ampia di configurazioni NextPDF. La capacità di firma fornita da questo bundle è B-B. I profili oltre B-B sono documentati separatamente nella documentazione NextPDF Premium e non sono dichiarati qui.

ChiaveTipoPredefinitoConvalida
signature.enabledbooleanofalse
signature.certificatescalarenull
signature.private_keyscalarenull
signature.passwordscalare(vuoto)
signature.extra_certselenco di stringhe[]
signature.levelenumB-Bset accettato: B-B, B-T, B-LT, B-LTA (B-B fornito; B-T/B-LT/B-LTA sono valori di compatibilità di schema, non capacità Pro fornita)

Il compiler pass registra un servizio signer solo quando signature.enabled è true e signature.certificate è impostato; in caso contrario, la sezione rimane inerte.

Configurazione del client Time Stamp Authority, utilizzata dalla firma Pro quando è configurata.

ChiaveTipoPredefinito
tsa.urlscalarenull
tsa.usernamescalare(vuoto)
tsa.passwordscalare(vuoto)
tsa.certscalarenull
tsa.keyscalarenull
tsa.timeoutintero30
tsa.allow_insecure_httpbooleanofalse
tsa.pinned_public_keyselenco di stringhe[]
tsa.warn_on_key_rotationbooleanotrue

Un servizio client TSA viene registrato soltanto quando tsa.url è impostato.

ChiaveTipoPredefinito
ocsp_cache.enabledbooleanotrue
ocsp_cache.ttlintero86400
ocsp_cache.directoryscalarenull

Parametri per la generazione asincrona, utilizzati quando symfony/messenger è installato.

ChiaveTipoPredefinito
messenger.transportscalareasync
messenger.timeoutintero120
messenger.retriesintero3

Un file di configurazione che mostra tutte le sezioni con i relativi valori predefiniti:

nextpdf:
page_format: A4
orientation: P
unit: mm
pdfa: ~
fonts_path: '%kernel.project_dir%/resources/fonts'
cache_path: '%kernel.cache_dir%/nextpdf'
image_cache_mb: 50
font_cache_locking: true
preload_fonts: []
icc_profile:
rgb: ~
cmyk: ~
defaults:
creator: NextPDF
author: ''
language: en
margin_top: 10.0
margin_right: 10.0
margin_bottom: 10.0
margin_left: 10.0
font_family: dejavusans
font_size: 12.0
trim_box: ~
bleed_box: ~
artisan:
chrome_binary: ~
render_timeout: 30
default_css: ''
no_sandbox: false
max_html_size: 5000000
signature:
enabled: false
certificate: ~
private_key: ~
password: ''
extra_certs: []
level: B-B
tsa:
url: ~
username: ''
password: ''
cert: ~
key: ~
timeout: 30
allow_insecure_http: false
pinned_public_keys: []
warn_on_key_rotation: true
ocsp_cache:
enabled: true
ttl: 86400
directory: ~
messenger:
transport: async
timeout: 120
retries: 3

Il bundle carica le definizioni dei servizi da config/services.php. La tabella seguente riflette esattamente quel file.

ID servizioCondivisoPubblicoNote
NextPDF\Typography\FontRegistrycostruito da nextpdf.fonts_path; logger PSR-3 facoltativo
NextPDF\Contracts\FontRegistryInterface(alias)alias di FontRegistry
NextPDF\Graphics\ImageRegistryLRU limitata; con tag kernel.reset (reset)
NextPDF\Core\DocumentFactorycondivide i due registry
NextPDF\Contracts\DocumentFactoryInterface(alias)alias di DocumentFactory
NextPDF\Symfony\Service\PdfFactorylegge defaults, pdfa, artisan come parametri
NextPDF\Contracts\PdfDocumentInterfacenofactory [PdfFactory, create]
NextPDF\Core\Document(alias)alias di PdfDocumentInterface
nextpdf.document(alias)alias di PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponsehelper stateless

Il bundle registra inoltre i binding per i contratti EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) solo quando esistono le corrispondenti classi di implementazione Premium. Ciascuno viene registrato come non condiviso, così i chiamanti ricevono una nuova istanza. Lo stato del parser relativo alla singola chiamata non si propaga mai tra le richieste.

nextpdf.document (e i suoi alias) è non condiviso: ogni risoluzione del container restituisce un documento distinto. In base a PSR-11, un container può restituire un valore diverso a chiamate get() successive con lo stesso identificatore — PSR-11 §1.1.2. Il font registry è condiviso e, dopo il warmup, bloccato. I dati strutturali dei font vengono quindi analizzati una sola volta per processo e non possono essere modificati durante la richiesta.

I servizi FontRegistry e ImageRegistry accettano un Psr\Log\LoggerInterface facoltativo, associato tramite nullOnInvalid(). Il logger è un collaboratore facoltativo e sostituibile, coerente con il contratto del logger PSR-3 (PSR-3).

PdfFactory, PdfResponse, l’interfaccia della factory dei documenti e l’interfaccia del font registry sono pubblici. Possono essere recuperati dal container o usati come type-hint in controller e servizi con autowiring. L’iniezione tramite costruttore di NextPDF\Symfony\Service\PdfFactory è il punto di ingresso consigliato.

  • pdfa impostato senza Pro — il valore viene memorizzato ma ignorato. PdfFactory applica PDF/A solo quando l’estensione Pro viene rilevata al momento della compilazione.
  • image_cache_mb: 0 — valido; disabilita la cache LRU delle immagini. I valori negativi vengono rifiutati al momento della compilazione.
  • signature.enabled: true senza signature.certificate — il servizio signer non viene registrato; la configurazione rimane silenziosamente inerte per scelta progettuale.
  • %kernel.*% segnaposto — i valori predefiniti di fonts_path e cache_path usano parametri del container Symfony; sovrascriverli con percorsi assoluti solo quando serve un percorso letterale.

Ogni riga contiene un’asserzione normativa formulata in questa pagina, ancorata a un reference_id completo a 64 cifre esadecimali dal corpus SDO gated. La provenienza (manifesto del corpus, trasporto di recupero) si trova in _sidecars/rag-citations.yaml.

SpecificaClausolareference_idAsserzione
PSR-11psr_11_container#1.1.2.p3.bget() può restituire valori diversi a ogni risoluzione
PSR-3psr_3_logger#x3.p17collaboratore LoggerInterface facoltativo

Le sezioni signature e tsa hanno effetto soltanto quando è installato nextpdf/premium (Pro). È una capacità Pro facoltativa; il bundle Core documentato qui non richiede alcuna modifica al codice per adottarla. Vedere </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — installare e registrare il bundle.
  • /integrations/symfony/overview/ — riepilogo delle funzionalità.
  • /integrations/symfony/production-usage/ — sicurezza dei worker e pattern asincroni.
  • /integrations/symfony/boot-and-discovery/ — come la configurazione viene risolta durante il boot.