Aller au contenu

Configurer le bundle Symfony NextPDF

Tout le comportement du bundle se configure sous la clé racine nextpdf dans config/packages/nextpdf.yaml. Chaque clé ayant une valeur par défaut, la configuration reste optionnelle. Cette page reflète exactement le contenu de Configuration.php.

Le schéma est défini par NextPDF\Symfony\DependencyInjection\Configuration. Les valeurs invalides font échouer la construction du conteneur en levant une InvalidConfigurationException de Symfony.

CléTypeValeur par défautValidation
page_formaténumérationA4une de ces valeurs : A4, A3, A5, Letter, Legal, Tabloid
orientationénumérationPune de ces valeurs : P, L
uniténumérationmmune de ces valeurs : pt, mm, cm, in
pdfascalairenullune de ces valeurs : null, 4, 4e, 4f
fonts_pathscalaire%kernel.project_dir%/resources/fonts
cache_pathscalaire%kernel.cache_dir%/nextpdf
image_cache_mbentier50minimum 0
font_cache_lockingbooléentrue
preload_fontsliste de chaînes[]
CléTypeValeur par défaut
icc_profile.rgbscalairenull
icc_profile.cmykscalairenull

Cette section s’applique à chaque document produit par PdfFactory.

CléTypeValeur par défaut
defaults.creatorscalaireNextPDF
defaults.authorscalaire(vide)
defaults.languagescalaireen
defaults.margin_topflottant10.0
defaults.margin_rightflottant10.0
defaults.margin_bottomflottant10.0
defaults.margin_leftflottant10.0
defaults.font_familyscalairedejavusans
defaults.font_sizeflottant12.0
defaults.trim_boxvariablenull
defaults.bleed_boxvariablenull

PdfFactory lit creator, author et language dans cette section et les applique à chaque nouveau document. Les autres clés sont stockées comme paramètres de conteneur afin d’être consommées par le moteur.

Cette section ne prend effet que lorsque nextpdf/artisan est installé et détecté.

CléTypeValeur par défaut
artisan.chrome_binaryscalairenull
artisan.render_timeoutentier30
artisan.default_cssscalaire(vide)
artisan.no_sandboxbooléenfalse
artisan.max_html_sizeentier5000000

Cette section ne prend effet que lorsque nextpdf/premium est installé. Lorsque le bundle et le niveau Pro sont tous deux présents, la configuration de signature prise en charge correspond au profil de base B-B. Le nœud level accepte les valeurs de chaîne listées ci-dessous afin d’assurer la compatibilité de schéma avec la famille plus large de configurations NextPDF. La capacité de signature fournie par ce bundle est B-B. Les profils au-delà de B-B sont documentés séparément dans la documentation NextPDF Premium et ne sont pas revendiqués ici.

CléTypeValeur par défautValidation
signature.enabledbooléenfalse
signature.certificatescalairenull
signature.private_keyscalairenull
signature.passwordscalaire(vide)
signature.extra_certsliste de chaînes[]
signature.levelénumérationB-Bvaleurs acceptées : B-B, B-T, B-LT, B-LTA (B-B livré ; B-T/B-LT/B-LTA sont des valeurs de compatibilité de schéma, pas une capacité Pro livrée)

La passe de compilation enregistre un service de signataire uniquement lorsque signature.enabled vaut true et que signature.certificate est défini ; sinon, la section est inerte.

Configuration du client Time Stamp Authority, utilisée par la signature Pro quand elle est configurée.

CléTypeValeur par défaut
tsa.urlscalairenull
tsa.usernamescalaire(vide)
tsa.passwordscalaire(vide)
tsa.certscalairenull
tsa.keyscalairenull
tsa.timeoutentier30
tsa.allow_insecure_httpbooléenfalse
tsa.pinned_public_keysliste de chaînes[]
tsa.warn_on_key_rotationbooléentrue

Un service client TSA est enregistré uniquement lorsque tsa.url est défini.

CléTypeValeur par défaut
ocsp_cache.enabledbooléentrue
ocsp_cache.ttlentier86400
ocsp_cache.directoryscalairenull

Paramètres de génération asynchrone, utilisés lorsque symfony/messenger est installé.

CléTypeValeur par défaut
messenger.transportscalaireasync
messenger.timeoutentier120
messenger.retriesentier3

Voici un fichier de configuration montrant chaque section avec ses valeurs par défaut :

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

Le bundle charge ses définitions de services depuis config/services.php. Le tableau ci-dessous reflète exactement ce fichier.

ID de servicePartagéPublicNotes
NextPDF\Typography\FontRegistryouiconstruit à partir de nextpdf.fonts_path ; logger PSR-3 optionnel
NextPDF\Contracts\FontRegistryInterface(alias)ouialias de FontRegistry
NextPDF\Graphics\ImageRegistryouicache LRU borné ; tagué kernel.reset (reset)
NextPDF\Core\DocumentFactoryouipartage les deux registres
NextPDF\Contracts\DocumentFactoryInterface(alias)ouialias de DocumentFactory
NextPDF\Symfony\Service\PdfFactoryouiouilit les defaults, pdfa, artisan comme paramètres
NextPDF\Contracts\PdfDocumentInterfacenonouifabrique [PdfFactory, create]
NextPDF\Core\Document(alias)alias de PdfDocumentInterface
nextpdf.document(alias)ouialias de PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponseouiassistant sans état

Le bundle enregistre également les liaisons de contrats EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) uniquement lorsque les classes d’implémentation Premium correspondantes existent. Chaque liaison est enregistrée en mode non partagé afin que les appelants reçoivent une instance neuve. L’état d’analyse propre à chaque appel ne fuit jamais d’une requête à l’autre.

nextpdf.document (et ses alias) est non partagé : chaque résolution du conteneur renvoie un document distinct. Selon PSR-11, un conteneur est autorisé à renvoyer une valeur différente lors d’appels get() successifs avec le même identifiant — PSR-11 §1.1.2. Le registre de polices est partagé et, après le préchauffage, verrouillé. Les données structurelles de police sont donc analysées une seule fois par processus et ne peuvent pas être modifiées en cours de requête.

Les services FontRegistry et ImageRegistry acceptent un Psr\Log\LoggerInterface optionnel, lié avec nullOnInvalid(). Le logger est un collaborateur optionnel et interchangeable, conformément au contrat de logger PSR-3 (PSR-3).

PdfFactory, PdfResponse, l’interface de fabrique de documents et l’interface de registre de polices sont publics. Tu peux les récupérer depuis le conteneur ou les typer dans des contrôleurs et services autowirés. L’injection par constructeur de NextPDF\Symfony\Service\PdfFactory est le point d’entrée recommandé.

  • pdfa défini sans Pro — la valeur est stockée, mais ignorée. PdfFactory n’applique PDF/A que lorsque l’extension Pro est détectée à la compilation.
  • image_cache_mb: 0 — est une valeur valide et désactive le cache LRU d’images. Les valeurs négatives sont rejetées au moment de la construction.
  • signature.enabled: true sans signature.certificate — le service de signataire n’est pas enregistré ; la configuration reste inerte sans avertissement, par conception.
  • Espaces réservés %kernel.*% — les valeurs par défaut de fonts_path et cache_path utilisent des paramètres de conteneur Symfony ; remplace-les par des chemins absolus uniquement lorsque le chemin littéral est requis.

Chaque ligne correspond à une affirmation normative de cette page, ancrée à un reference_id complet de 64 caractères hexadécimaux et issu du corpus SDO sous contrôle d’accès. La provenance (manifeste du corpus, transport de récupération) se trouve dans _sidecars/rag-citations.yaml.

SpécificationClausereference_idAffirmation
PSR-11psr_11_container#1.1.2.p3.bget() peut renvoyer des valeurs différentes à chaque résolution
PSR-3psr_3_logger#x3.p17Collaborateur LoggerInterface optionnel

Les sections signature et tsa ne prennent effet que lorsque nextpdf/premium (Pro) est installé. Il s’agit d’une capacité Pro optionnelle ; le bundle Core documenté ici n’exige aucune modification de code pour l’adopter. Voir </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — installe et enregistre le bundle.
  • /integrations/symfony/overview/ — résumé des capacités.
  • /integrations/symfony/production-usage/ — sécurité des workers et schémas asynchrones.
  • /integrations/symfony/boot-and-discovery/ — comment la configuration est résolue pendant le démarrage.