Aller au contenu

Installer le package Laravel NextPDF

Installe nextpdf/laravel avec Composer. La découverte automatique enregistre le service provider pour toi. Publie ensuite le fichier de configuration afin de pouvoir l’adapter. Le package détecte automatiquement les extensions NextPDF optionnelles.

Fenêtre de terminal
composer require nextpdf/laravel

Le package déclare les contraintes suivantes dans son composer.json :

PrérequisContrainte
PHP>=8.4 <9.0
laravel/framework^12.0
nextpdf/core^3.0 || ^5.2
psr/http-client^1.0

Le package est chargé automatiquement via une seule table PSR-4. Le préfixe NextPDF\Laravel\ se résout vers src/Laravel/. Cette organisation suit la règle PSR-4 de correspondance entre préfixe et répertoire de base (PSR-4 §3).

Après avoir lancé composer require, la découverte automatique des packages Laravel lit le bloc extra.laravel du composer.json de ce package. Elle enregistre ensuite le provider et l’alias de la facade pour toi, ce qui t’évite de modifier config/app.php à la main. Voici ce bloc :

resource: composer.json (extra.laravel)
{
"extra": {
"laravel": {
"providers": [
"NextPDF\\Laravel\\NextPdfServiceProvider"
],
"aliases": {
"Pdf": "NextPDF\\Laravel\\Facades\\Pdf"
}
}
}
}

La documentation Laravel consacrée aux packages explique ce fonctionnement. Le tableau extra.laravel.providers enregistre automatiquement les service providers, et le tableau extra.laravel.aliases enregistre automatiquement les alias de facade (guide de développement de packages Laravel 12, https://laravel.com/docs/12.x/packages, consulté le 2026-05-18).

Publie le fichier de configuration avec le tag nextpdf-config. Ce tag est défini dans NextPdfServiceProvider::boot().

Fenêtre de terminal
php artisan vendor:publish --tag=nextpdf-config

Cette commande écrit config/nextpdf.php dans ton application. Le provider fusionne aussi la configuration par défaut du package sous la clé nextpdf pendant register(), si bien que le package fonctionne même avant la publication. La publication rend simplement le fichier modifiable dans ton application.

Vérifie que le provider est bien découvert :

Fenêtre de terminal
php artisan package:discover --ansi

Pour des déploiements reproductibles, fige la contrainte. Désactive explicitement la découverte uniquement lorsque tu enregistres le provider toi-même :

resource: opt-out pattern (Laravel 12 packages guide)
{
"extra": {
"laravel": {
"dont-discover": [
"nextpdf/laravel"
]
}
}
}

Lorsque la découverte est désactivée, enregistre le provider toi-même dans bootstrap/providers.php :

resource: bootstrap/providers.php (manual registration)
<?php
declare(strict_types=1);
return [
App\Providers\AppServiceProvider::class,
NextPDF\Laravel\NextPdfServiceProvider::class,
];

Le package liste les packages compagnons optionnels sous suggest dans son composer.json. Il les détecte à l’exécution :

PackageEffet une fois installéPoint de détection
nextpdf/artisanQuand une classe factory Chrome est présente, la configuration du renderer HTML Chrome CDP est appliquée au binding du documentNextPdfServiceProvider::register() vérifie la présence de la classe browser-factory Chrome
nextpdf/premiumLa signature (PAdES B-B), l’archivage PDF/A et les concrets du contrat de facture électronique sont résolus via les clés de conteneur existantesrésolus à la demande lors de la première résolution du conteneur

Installe une extension de la même manière :

Fenêtre de terminal
composer require nextpdf/artisan

Aucun câblage supplémentaire n’est nécessaire. Le provider détecte l’extension à son prochain enregistrement.

  • La publication est idempotente. Elle n’écrase pas un config/nextpdf.php existant. Ajoute --force lorsque tu veux l’écraser volontairement.
  • Le provider est différé, si bien qu’un php artisan package:discover confirmant le package suffit. Les bindings eux-mêmes n’apparaissent qu’à la première résolution.
  • Le package prend en charge nextpdf/core sur les deux lignes majeures ^3.0 et ^5.2. Fais correspondre la contrainte du core à la ligne que ton application fige. La surface de l’adaptateur Laravel est identique sur les deux.
  • Le badge du README et le composer.json s’accordent sur Apache-2.0. Le package a migré depuis la licence LGPL-3.0-or-later. Les versions taguées avant la migration restent sous la licence précédente (voir CHANGELOG.md).

La résolution de nextpdf/core domine le coût de composer require. L’enregistrement du provider n’ajoute aucun coût de démarrage mesurable, car tous les bindings sont des closures différées. Le coût de construction lors de la première résolution est documenté dans /integrations/laravel/boot-and-discovery/.

Installe depuis le package Packagist canonique nextpdf/laravel. Le package fournit des en-têtes SPDX REUSE et un fichier Apache-2.0 NOTICE. Fige la contrainte dans composer.json et commite composer.lock pour que les workers déployés résolvent l’arbre des dépendances vérifié.

AffirmationSourceClausereference_id
Le préfixe PSR-4 correspond au répertoire de basePSR-4 Autoloader§3

Les noms de clés de la découverte automatique de Laravel ont été corroborés dans la documentation officielle de développement de packages Laravel 12 (https://laravel.com/docs/12.x/packages, consulté le 2026-05-18).

nextpdf/premium ajoute les concrets de signature, PDF/A et facture électronique. Il s’agit d’une capacité Enterprise optionnelle. Le package Core documenté ici n’exige aucune modification de code pour l’adopter. Voir https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/overview/ — architecture du package et table des bindings
  • /integrations/laravel/quickstart/ — premier contrôleur exécutable
  • /integrations/laravel/configuration/ — explication de chaque clé de configuration
  • /integrations/laravel/boot-and-discovery/ — rouages internes de la découverte et durées de vie des bindings