Ir al contenido

Instalación del paquete de Laravel de NextPDF

Instala nextpdf/laravel con Composer. El descubrimiento automático registra el proveedor de servicios automáticamente. Después, publica el archivo de configuración para que sea editable. El paquete detecta por sí mismo cualquier extensión opcional de NextPDF.

Ventana de terminal
composer require nextpdf/laravel

El paquete declara estas restricciones en su composer.json:

RequisitoRestricción
PHP>=8.4 <9.0
laravel/framework^12.0
nextpdf/core^3.0 || ^5.2
psr/http-client^1.0

El paquete se carga automáticamente mediante un único mapa PSR-4. El prefijo NextPDF\Laravel\ se resuelve en src/Laravel/. Esto sigue la regla PSR-4 que asigna un prefijo a un directorio base (PSR-4 §3).

Después de ejecutar composer require, el descubrimiento automático de paquetes de Laravel lee el bloque extra.laravel del composer.json de este paquete. Luego registra automáticamente el proveedor y el alias de la facade, por lo que no es necesario editar config/app.php a mano. El bloque es el siguiente:

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

La documentación de paquetes de Laravel explica cómo funciona este mecanismo. El arreglo extra.laravel.providers registra automáticamente los proveedores de servicios, y el arreglo extra.laravel.aliases registra automáticamente los alias de facade (guía de desarrollo de paquetes de Laravel 12, https://laravel.com/docs/12.x/packages, consultado el 2026-05-18).

Publica el archivo de configuración con la etiqueta nextpdf-config. El nombre de esta etiqueta se define en NextPdfServiceProvider::boot().

Ventana de terminal
php artisan vendor:publish --tag=nextpdf-config

Esto escribe config/nextpdf.php en la aplicación. El proveedor también fusiona la configuración predeterminada del paquete bajo la clave nextpdf durante register(), por lo que el paquete funciona incluso antes de publicar. Publicar solo hace que el archivo sea editable en la aplicación.

Confirmar que el proveedor se descubre correctamente:

Ventana de terminal
php artisan package:discover --ansi

Para despliegues reproducibles, fijar la restricción. Desactivar el descubrimiento explícitamente solo cuando se registre el proveedor manualmente:

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

Cuando el descubrimiento está desactivado, registrar el proveedor manualmente en bootstrap/providers.php:

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

El paquete enumera las extensiones opcionales bajo suggest en su composer.json. Las detecta en tiempo de ejecución:

PaqueteEfecto al instalarsePunto de detección
nextpdf/artisanLa configuración del renderer HTML de Chrome CDP se aplica al binding del documento cuando está presente una clase de fábrica de ChromeNextPdfServiceProvider::register() comprueba si está presente la clase de fábrica del navegador Chrome
nextpdf/premiumLa firma (PAdES B-B), el archivado PDF/A y las concreciones del contrato de factura electrónica se resuelven a través de las claves existentes del contenedorse resuelven de forma diferida en la primera resolución del contenedor

Instalar una extensión de la misma manera:

Ventana de terminal
composer require nextpdf/artisan

No hace falta cableado adicional. El proveedor detecta la extensión la próxima vez que se registra.

  • La publicación es idempotente. No sobrescribe un config/nextpdf.php existente. Agregar --force cuando se quiera sobrescribir a propósito.
  • El proveedor es diferido, por lo que basta con un php artisan package:discover que confirme el paquete. Los bindings en sí no aparecen hasta la primera resolución.
  • El paquete admite nextpdf/core tanto en la línea principal ^3.0 como en la ^5.2. Hacer coincidir la restricción del core con la línea fijada por la aplicación. La superficie del adaptador de Laravel es la misma en ambas.
  • La insignia del README y el composer.json coinciden en indicar Apache-2.0. El paquete cambió de licencia desde LGPL-3.0-or-later. Las versiones etiquetadas antes de la migración permanecen bajo la licencia anterior (consultar CHANGELOG.md).

La resolución de nextpdf/core representa la mayor parte del costo de composer require. El registro del proveedor no añade ningún costo de arranque medible, porque todos los bindings son closures diferidos. El costo de construcción en la primera resolución se documenta en /integrations/laravel/boot-and-discovery/.

Instalar desde el paquete canónico de Packagist nextpdf/laravel. El paquete incluye encabezados REUSE de SPDX y un archivo Apache-2.0 NOTICE. Fijar la restricción en composer.json y confirmar composer.lock para que los workers desplegados resuelvan el árbol de dependencias verificado.

AfirmaciónFuenteCláusulareference_id
El prefijo PSR-4 se asigna al directorio baseAutoloader PSR-4§3

Los nombres de las claves de descubrimiento automático de Laravel se corroboraron con la documentación oficial de desarrollo de paquetes de Laravel 12 (https://laravel.com/docs/12.x/packages, consultado el 2026-05-18).

nextpdf/premium añade concreciones de firma, PDF/A y factura electrónica. Es una capacidad Enterprise opcional. El paquete Core documentado aquí no requiere cambios de código para adoptarla. Consulta https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/overview/ — arquitectura del paquete y tabla de bindings
  • /integrations/laravel/quickstart/ — primer controlador ejecutable
  • /integrations/laravel/configuration/ — explicación de cada clave de configuración
  • /integrations/laravel/boot-and-discovery/ — detalles internos del descubrimiento y tiempos de vida de los bindings