Instalación del paquete de Laravel de NextPDF
De un vistazo
Sección titulada «De un vistazo»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.
Instalación
Sección titulada «Instalación»composer require nextpdf/laravelEl paquete declara estas restricciones en su composer.json:
| Requisito | Restricció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).
Resumen conceptual
Sección titulada «Resumen conceptual»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:
{ "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).
Ejemplo de código — Inicio rápido
Sección titulada «Ejemplo de código — Inicio rápido»Publica el archivo de configuración con la etiqueta nextpdf-config. El nombre de esta etiqueta se define en NextPdfServiceProvider::boot().
php artisan vendor:publish --tag=nextpdf-configEsto 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:
php artisan package:discover --ansiEjemplo de código — Producción
Sección titulada «Ejemplo de código — Producción»Para despliegues reproducibles, fijar la restricción. Desactivar el descubrimiento explícitamente solo cuando se registre el proveedor manualmente:
{ "extra": { "laravel": { "dont-discover": [ "nextpdf/laravel" ] } }}Cuando el descubrimiento está desactivado, registrar el proveedor manualmente en bootstrap/providers.php:
<?php
declare(strict_types=1);
return [ App\Providers\AppServiceProvider::class, NextPDF\Laravel\NextPdfServiceProvider::class,];Extensiones opcionales
Sección titulada «Extensiones opcionales»El paquete enumera las extensiones opcionales bajo suggest en su composer.json. Las detecta en tiempo de ejecución:
| Paquete | Efecto al instalarse | Punto de detección |
|---|---|---|
nextpdf/artisan | La configuración del renderer HTML de Chrome CDP se aplica al binding del documento cuando está presente una clase de fábrica de Chrome | NextPdfServiceProvider::register() comprueba si está presente la clase de fábrica del navegador Chrome |
nextpdf/premium | La 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 contenedor | se resuelven de forma diferida en la primera resolución del contenedor |
Instalar una extensión de la misma manera:
composer require nextpdf/artisanNo hace falta cableado adicional. El proveedor detecta la extensión la próxima vez que se registra.
Casos límite y errores frecuentes
Sección titulada «Casos límite y errores frecuentes»- La publicación es idempotente. No sobrescribe un
config/nextpdf.phpexistente. Agregar--forcecuando se quiera sobrescribir a propósito. - El proveedor es diferido, por lo que basta con un
php artisan package:discoverque confirme el paquete. Los bindings en sí no aparecen hasta la primera resolución. - El paquete admite
nextpdf/coretanto en la línea principal^3.0como 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.jsoncoinciden 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 (consultarCHANGELOG.md).
Rendimiento
Sección titulada «Rendimiento»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/.
Notas de seguridad
Sección titulada «Notas de seguridad»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.
Conformidad
Sección titulada «Conformidad»| Afirmación | Fuente | Cláusula | reference_id |
|---|---|---|---|
| El prefijo PSR-4 se asigna al directorio base | Autoloader 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).
Contexto comercial
Sección titulada «Contexto comercial»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.
Ver también
Sección titulada «Ver también»- /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