Aller au contenu

Installer le bundle Symfony de NextPDF

Installe le bundle avec Composer. Dans une application Symfony Flex, le bundle s’enregistre automatiquement. Dans une application sans Flex, enregistre-le une seule fois dans config/bundles.php.

Les contraintes ci-dessous proviennent du composer.json du bundle.

DépendanceContrainte
php>=8.4 <9.0
nextpdf/core^3.0 || ^5.2
symfony/framework-bundle^7.2
symfony/dependency-injection^7.2
symfony/config^7.2
symfony/http-foundation^7.2
psr/log^3.0

Le bundle vérifie également la présence de deux extensions PHP lors de la compilation du conteneur : ext-mbstring et ext-zlib. Ces deux extensions sont activées dans chaque runtime PHP pris en charge. Le garde-fou déclenche un échec immédiat, avec un message clair, si l’une des deux manque.

Ces packages sont déclarés dans la section suggest du composer.json du bundle. Lorsqu’ils sont installés, ils débloquent un comportement supplémentaire :

PackageApporte
nextpdf/artisanRendu HTML via Chrome CDP, détecté automatiquement lors de la compilation
nextpdf/premiumArchivage PDF/A et signature numérique (installe le niveau Pro), détecté automatiquement lors de la compilation
symfony/messengerGénération PDF asynchrone via le handler Messenger
Fenêtre de terminal
composer require nextpdf/symfony

Le bundle est chargé automatiquement sous le préfixe PSR-4 NextPDF\Symfony\, associé à src/Symfony/. Ce mappage est déclaré dans composer.jsonautoload.psr-4. L’autoloader généré par Composer associe le préfixe d’espace de noms à ce répertoire de base, comme le définit la spécification d’autoloader PSR-4 — voir PSR-4 §2.

Le bundle fournit une indication d’enregistrement automatique dans composer.json :

{
"extra": {
"symfony": {
"bundles": {
"NextPDF\\Symfony\\NextPdfBundle": "all"
}
}
}
}

Dans une application où Flex est activé, cette entrée ajoute le bundle à config/bundles.php pour chaque environnement (all). Tu n’as pas besoin de modifier le fichier manuellement. Pour le modèle d’enregistrement, consulte la documentation officielle des bundles Symfony (https://symfony.com/doc/current/bundles.html).

Si ton application n’utilise pas Symfony Flex, ajoute toi-même le bundle à config/bundles.php :

return [
// ... other bundles
NextPDF\Symfony\NextPdfBundle::class => ['all' => true],
];

La classe du bundle est NextPDF\Symfony\NextPdfBundle. Elle étend la classe de base Symfony Symfony\Component\HttpKernel\Bundle\Bundle. Le getPath() du bundle renvoie la racine du package. Sa méthode build() enregistre la passe de compilation OptionalExtensionPass.

L’alias de configuration du bundle est nextpdf. Crée config/packages/nextpdf.yaml. Une fois publiée, une recipe Flex y dépose pour toi une copie par défaut. Un fichier minimal qui s’appuie entièrement sur les valeurs par défaut intégrées ressemble à ceci :

nextpdf: ~

Chaque clé ayant une valeur par défaut, une configuration vide est valide. La page /integrations/symfony/configuration/ documente l’arborescence de configuration complète.

Vérifie que le conteneur voit bien les services du bundle :

Fenêtre de terminal
php bin/console debug:container nextpdf

Tu devrais voir des services, notamment l’alias nextpdf.document et NextPDF\Symfony\Service\PdfFactory. Pour inspecter la configuration résolue, exécute :

Fenêtre de terminal
php bin/console debug:config nextpdf

Cela affiche l’arborescence de configuration fusionnée, avec tes surcharges et les valeurs par défaut.

  • Plage de contraintes du core — le bundle accepte nextpdf/core^3.0 || ^5.2. Composer choisit celle qui satisfait le reste de ton graphe de dépendances. Épingle une seule version majeure dans le composer.json de ton application si tu as besoin d’une version déterministe du moteur.
  • Garde-fou d’extension manquante — si php bin/console échoue au démarrage avec un message concernant ext-mbstring ou ext-zlib, active l’extension nommée dans php.ini. C’est un comportement fail-fast intentionnel, pas un défaut du bundle.
  • Flex n’a pas enregistré le bundle — vide le cache de Composer, puis réinstalle. Si tu n’utilises pas Flex, reviens à l’étape manuelle config/bundles.php.

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

SpecClausereference_idAffirmation
PSR-4psr_4_autoload#x1.x2.p5Mappage du préfixe d’espace de noms vers le répertoire pour l’autoloader
  • /integrations/symfony/overview/ — ce que le bundle fournit.
  • /integrations/symfony/configuration/ — arborescence complète de configuration et table des services.
  • /integrations/symfony/quickstart/ — premier contrôleur exécutable.
  • /integrations/symfony/boot-and-discovery/ — séquence détaillée de découverte et de démarrage.