Pular para o conteúdo

Configure o bundle Symfony do NextPDF

Configure todo o comportamento do bundle sob a chave raiz nextpdf em config/packages/nextpdf.yaml. Cada chave tem um padrão; portanto, você só define os valores que quer alterar. Esta página reflete exatamente o Configuration.php.

NextPDF\Symfony\DependencyInjection\Configuration define o esquema. Valores inválidos fazem a construção do contêiner falhar com uma InvalidConfigurationException do Symfony.

ChaveTipoPadrãoValidação
page_formatenumA4um entre A4, A3, A5, Letter, Legal, Tabloid
orientationenumPum entre P, L
unitenummmum entre pt, mm, cm, in
pdfascalarnullum entre null, 4, 4e, 4f
fonts_pathscalar%kernel.project_dir%/resources/fonts
cache_pathscalar%kernel.cache_dir%/nextpdf
image_cache_mbinteger50mínimo 0
font_cache_lockingbooleantrue
preload_fontslista de strings[]
ChaveTipoPadrão
icc_profile.rgbscalarnull
icc_profile.cmykscalarnull

Aplica-se a todos os documentos produzidos pelo PdfFactory.

ChaveTipoPadrão
defaults.creatorscalarNextPDF
defaults.authorscalar(vazio)
defaults.languagescalaren
defaults.margin_topfloat10.0
defaults.margin_rightfloat10.0
defaults.margin_bottomfloat10.0
defaults.margin_leftfloat10.0
defaults.font_familyscalardejavusans
defaults.font_sizefloat12.0
defaults.trim_boxvariablenull
defaults.bleed_boxvariablenull

PdfFactorycreator, author e language desta seção e os aplica a cada novo documento. O bundle armazena as demais chaves como parâmetros de contêiner para uso do mecanismo.

Aplica-se apenas quando nextpdf/artisan está instalado e é detectado.

ChaveTipoPadrão
artisan.chrome_binaryscalarnull
artisan.render_timeoutinteger30
artisan.default_cssscalar(vazio)
artisan.no_sandboxbooleanfalse
artisan.max_html_sizeinteger5000000

Aplica-se apenas quando nextpdf/premium está instalado. Quando o bundle e a camada Pro estão presentes, a configuração de assinatura suportada é o perfil baseline B-B. O nó level aceita os valores de string abaixo para manter compatibilidade de esquema com a família mais ampla de configurações do NextPDF. Este bundle entrega a capacidade de assinatura B-B. Perfis além de B-B são documentados separadamente na documentação do NextPDF Premium e não são reivindicados aqui.

ChaveTipoPadrãoValidação
signature.enabledbooleanfalse
signature.certificatescalarnull
signature.private_keyscalarnull
signature.passwordscalar(vazio)
signature.extra_certslista de strings[]
signature.levelenumB-Bconjunto aceito: B-B, B-T, B-LT, B-LTA (B-B entregue; B-T/B-LT/B-LTA são valores de compatibilidade de esquema, não capacidade Pro entregue)

O compiler pass registra um serviço de assinatura apenas quando signature.enabled é true e signature.certificate está definido; caso contrário, a seção permanece inerte.

Configuração do cliente de Time Stamp Authority (TSA), usada pela assinatura Pro quando ela está configurada.

ChaveTipoPadrão
tsa.urlscalarnull
tsa.usernamescalar(vazio)
tsa.passwordscalar(vazio)
tsa.certscalarnull
tsa.keyscalarnull
tsa.timeoutinteger30
tsa.allow_insecure_httpbooleanfalse
tsa.pinned_public_keyslista de strings[]
tsa.warn_on_key_rotationbooleantrue

O bundle registra um serviço de cliente TSA apenas quando tsa.url está definido.

ChaveTipoPadrão
ocsp_cache.enabledbooleantrue
ocsp_cache.ttlinteger86400
ocsp_cache.directoryscalarnull

Configurações para geração assíncrona, consumidas quando symfony/messenger está instalado.

ChaveTipoPadrão
messenger.transportscalarasync
messenger.timeoutinteger120
messenger.retriesinteger3

Um arquivo de configuração que mostra cada seção com seus respectivos padrões:

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

O bundle carrega suas definições de serviço a partir de config/services.php. A tabela abaixo reflete esse arquivo exatamente.

ID do serviçoCompartilhadoPúblicoNotas
NextPDF\Typography\FontRegistrysimconstruído a partir de nextpdf.fonts_path; logger opcional conforme PHP Standard Recommendation 3 (PSR-3)
NextPDF\Contracts\FontRegistryInterface(alias)simalias de FontRegistry
NextPDF\Graphics\ImageRegistrysimlimitado por least-recently-used (LRU); marcado com kernel.reset (reset)
NextPDF\Core\DocumentFactorysimcompartilha os dois registros
NextPDF\Contracts\DocumentFactoryInterface(alias)simalias de DocumentFactory
NextPDF\Symfony\Service\PdfFactorysimsimdefaults, pdfa e artisan como parâmetros
NextPDF\Contracts\PdfDocumentInterfacenãosimfactory [PdfFactory, create]
NextPDF\Core\Document(alias)alias de PdfDocumentInterface
nextpdf.document(alias)simalias de PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponsesimauxiliar sem estado

O bundle também registra as ligações de contrato do EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) apenas quando as classes de implementação Premium correspondentes existem. Cada serviço é marcado como não compartilhado, então cada chamada recebe uma nova instância. O estado do parser por chamada nunca vaza entre requisições.

nextpdf.document (e os aliases dele) é não compartilhado: cada resolução do contêiner retorna um documento distinto. Segundo a PHP Standard Recommendation 11 (PSR-11), um contêiner pode retornar um valor diferente em chamadas get() sucessivas com o mesmo identificador; veja PSR-11 §1.1.2. O registro de fontes é compartilhado e travado após o warmup. Os dados estruturais de fonte são analisados uma vez por processo e não podem ser modificados no meio da requisição.

Os serviços FontRegistry e ImageRegistry aceitam um Psr\Log\LoggerInterface opcional; o Symfony o vincula com nullOnInvalid(). O logger continua sendo um colaborador opcional e substituível, em conformidade com o contrato de logger da PSR-3.

PdfFactory, PdfResponse, a interface da factory de documentos e a interface do registro de fontes são públicas. Elas podem ser obtidas do contêiner ou usadas como type-hint em controllers e serviços com autowiring. A injeção pelo construtor de NextPDF\Symfony\Service\PdfFactory é o ponto de entrada recomendado.

  • pdfa definido sem o Pro — o valor é armazenado, mas ignorado. O PdfFactory aplica Portable Document Format/Archival (PDF/A) apenas quando a extensão Pro é detectada durante a compilação.
  • image_cache_mb: 0 — válido; desativa o cache LRU de imagens. Valores negativos são rejeitados no momento da construção.
  • signature.enabled: true sem signature.certificate — o serviço de assinatura não é registrado; a configuração fica inerte, silenciosamente e por design.
  • Placeholders %kernel.*% — os padrões de fonts_path e cache_path usam parâmetros de contêiner do Symfony; sobrescreva com caminhos absolutos apenas quando o caminho literal for necessário.

Nesta página, cada linha é uma afirmação normativa vinculada a um reference_id completo de 64 hex do corpus restrito da standards development organization (SDO). A proveniência, incluindo o manifesto do corpus e o transporte de recuperação, está em _sidecars/rag-citations.yaml.

SpecCláusulareference_idAfirmação
PSR-11psr_11_container#1.1.2.p3.bget() pode retornar valores diferentes por resolução
PSR-3psr_3_logger#x3.p17Colaborador LoggerInterface opcional

As seções signature e tsa se aplicam apenas quando nextpdf/premium (Pro) está instalado. Essa capacidade Pro opcional não exige nenhuma alteração de código no bundle Core documentado aqui. Veja </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — instale e registre o bundle.
  • /integrations/symfony/overview/ — consulte o resumo de capacidades.
  • /integrations/symfony/production-usage/ — segurança de workers e padrões assíncronos.
  • /integrations/symfony/boot-and-discovery/ — veja como a configuração é resolvida durante o boot.