Ir al contenido

Configuración del bundle de NextPDF para Symfony

Todo el comportamiento del bundle se configura bajo la clave raíz nextpdf en config/packages/nextpdf.yaml. Cada clave tiene un valor predeterminado, por lo que la configuración es opcional. Esta página refleja con exactitud Configuration.php.

El esquema está definido por NextPDF\Symfony\DependencyInjection\Configuration. Los valores no válidos hacen fallar la construcción del contenedor con una InvalidConfigurationException de Symfony.

ClaveTipoPredeterminadoValidación
page_formatenumA4uno de A4, A3, A5, Letter, Legal, Tabloid
orientationenumPuno de P, L
unitenummmuno de pt, mm, cm, in
pdfaescalarnulluno de null, 4, 4e, 4f
fonts_pathescalar%kernel.project_dir%/resources/fonts
cache_pathescalar%kernel.cache_dir%/nextpdf
image_cache_mbentero50mínimo 0
font_cache_lockingbooleanotrue
preload_fontslista de cadenas[]
ClaveTipoPredeterminado
icc_profile.rgbescalarnull
icc_profile.cmykescalarnull

Se aplica a cada documento producido por PdfFactory.

ClaveTipoPredeterminado
defaults.creatorescalarNextPDF
defaults.authorescalar(vacío)
defaults.languageescalaren
defaults.margin_topflotante10.0
defaults.margin_rightflotante10.0
defaults.margin_bottomflotante10.0
defaults.margin_leftflotante10.0
defaults.font_familyescalardejavusans
defaults.font_sizeflotante12.0
defaults.trim_boxvariablenull
defaults.bleed_boxvariablenull

PdfFactory lee creator, author y language de esta sección y los aplica a cada documento nuevo. Las claves restantes se almacenan como parámetros del contenedor para que el motor las consuma.

Solo tiene efecto cuando nextpdf/artisan está instalado y se detecta.

ClaveTipoPredeterminado
artisan.chrome_binaryescalarnull
artisan.render_timeoutentero30
artisan.default_cssescalar(vacío)
artisan.no_sandboxbooleanofalse
artisan.max_html_sizeentero5000000

Solo tiene efecto cuando nextpdf/premium está instalado. Cuando el bundle y el nivel Pro están presentes, la configuración de firma admitida es el perfil baseline B-B. El nodo level acepta los valores de cadena enumerados a continuación por compatibilidad del esquema con la familia más amplia de configuración de NextPDF. La capacidad de firma que ofrece este bundle es B-B. Los perfiles superiores a B-B se documentan por separado en la documentación de NextPDF Premium y no se afirman en esta página.

ClaveTipoPredeterminadoValidación
signature.enabledbooleanofalse
signature.certificateescalarnull
signature.private_keyescalarnull
signature.passwordescalar(vacío)
signature.extra_certslista de cadenas[]
signature.levelenumB-Bconjunto aceptado: B-B, B-T, B-LT, B-LTA (B-B entregado; B-T/B-LT/B-LTA son valores de compatibilidad de esquema, no capacidad Pro entregada)

El compiler pass registra un servicio de firma solo cuando signature.enabled es true y signature.certificate está definido; de lo contrario, la sección permanece inerte.

Configuración del cliente de Time Stamp Authority, utilizada por la firma Pro cuando está configurada.

ClaveTipoPredeterminado
tsa.urlescalarnull
tsa.usernameescalar(vacío)
tsa.passwordescalar(vacío)
tsa.certescalarnull
tsa.keyescalarnull
tsa.timeoutentero30
tsa.allow_insecure_httpbooleanofalse
tsa.pinned_public_keyslista de cadenas[]
tsa.warn_on_key_rotationbooleanotrue

Se registra un servicio de cliente de TSA solo cuando tsa.url está definido.

ClaveTipoPredeterminado
ocsp_cache.enabledbooleanotrue
ocsp_cache.ttlentero86400
ocsp_cache.directoryescalarnull

Parámetros de generación asíncrona, que se consumen cuando symfony/messenger está instalado.

ClaveTipoPredeterminado
messenger.transportescalarasync
messenger.timeoutentero120
messenger.retriesentero3

Archivo de configuración que muestra cada sección con sus valores predeterminados:

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

El bundle carga sus definiciones de servicios desde config/services.php. La tabla siguiente refleja ese archivo con exactitud.

Id de servicioCompartidoPúblicoNotas
NextPDF\Typography\FontRegistryconstruido a partir de nextpdf.fonts_path; logger PSR-3 opcional
NextPDF\Contracts\FontRegistryInterface(alias)alias de FontRegistry
NextPDF\Graphics\ImageRegistryLRU acotada; etiquetada kernel.reset (reset)
NextPDF\Core\DocumentFactorycomparte los dos registros
NextPDF\Contracts\DocumentFactoryInterface(alias)alias de DocumentFactory
NextPDF\Symfony\Service\PdfFactorylee defaults, pdfa, artisan como parámetros
NextPDF\Contracts\PdfDocumentInterfacenofactory [PdfFactory, create]
NextPDF\Core\Document(alias)alias de PdfDocumentInterface
nextpdf.document(alias)alias de PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponseasistente sin estado

Además, el bundle registra los enlaces de contratos de EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) solo cuando existen las clases de implementación Premium correspondientes. Cada enlace se registra como no compartido, de modo que sus consumidores reciben una instancia nueva. El estado del analizador de una llamada nunca se filtra a otras solicitudes.

nextpdf.document (y sus alias) es no compartido: cada resolución del contenedor devuelve un documento distinto. Según PSR-11, un contenedor puede devolver un valor diferente en llamadas sucesivas a get() con el mismo identificador — PSR-11 §1.1.2. El registro de fuentes es compartido y, tras el calentamiento, queda bloqueado. Por lo tanto, los datos estructurales de las fuentes se analizan una sola vez por proceso y no se pueden modificar en mitad de una solicitud.

Los servicios FontRegistry e ImageRegistry aceptan un Psr\Log\LoggerInterface opcional, enlazado mediante nullOnInvalid(). El logger es un colaborador opcional e intercambiable, coherente con el contrato de logger de PSR-3 (PSR-3).

PdfFactory, PdfResponse, la interfaz de la factoría de documentos y la interfaz del registro de fuentes son públicas. Se pueden obtener del contenedor o declarar por tipo en controladores y servicios con autowiring. La inyección por constructor de NextPDF\Symfony\Service\PdfFactory es el punto de entrada recomendado.

  • pdfa definido sin Pro — el valor se almacena, pero se ignora. PdfFactory aplica PDF/A solo cuando la extensión Pro se detecta en tiempo de compilación.
  • image_cache_mb: 0 — válido; desactiva la caché LRU de imágenes. Los valores negativos se rechazan al construir.
  • signature.enabled: true sin signature.certificate — el servicio de firmante no se registra; la configuración queda silenciosamente inerte por diseño.
  • Marcadores de posición %kernel.*% — los valores predeterminados de fonts_path y cache_path usan parámetros del contenedor de Symfony; sustituirlos por rutas absolutas solo cuando se requiera la ruta literal.

Cada fila corresponde a una afirmación normativa de esta página, anclada a un reference_id completo de 64 caracteres hexadecimales del corpus SDO controlado. La procedencia (manifiesto del corpus, transporte de recuperación) se encuentra en _sidecars/rag-citations.yaml.

EspecificaciónCláusulareference_idAfirmación
PSR-11psr_11_container#1.1.2.p3.bget() puede devolver valores diferentes por resolución
PSR-3psr_3_logger#x3.p17Colaborador LoggerInterface opcional

Las secciones signature y tsa solo tienen efecto cuando nextpdf/premium (Pro) está instalado. Se trata de una capacidad Pro opcional; el bundle Core documentado aquí no necesita ningún cambio de código para adoptarla. Consultar </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — instalación y registro del bundle.
  • /integrations/symfony/overview/ — resumen de capacidades.
  • /integrations/symfony/production-usage/ — seguridad de los workers y patrones asíncronos.
  • /integrations/symfony/boot-and-discovery/ — cómo se resuelve la configuración durante el arranque.