Ir al contenido

Instalar NextPDF para CodeIgniter 4

Instalar el paquete con Composer. CodeIgniter 4 descubre automáticamente la clase Services y las funciones de ayuda. No hace falta registrar nada manualmente.

El composer.json del paquete declara estas restricciones y es la fuente autorizada. La tabla siguiente expresa esas mismas restricciones.

DependenciaRestricciónNotas
PHP>=8.4 <9.0El paquete está orientado a PHP 8.4.
nextpdf/core^3.0 || ^5.2El motor de NextPDF.
codeigniter4/framework^4.6Verificado con CodeIgniter 4.7.0.
ext-mbstringrequerido en tiempo de ejecuciónSe valida una vez por proceso.
ext-zlibrequerido en tiempo de ejecuciónSe valida una vez por proceso.

Paquetes opcionales declarados en suggest:

PaqueteAgrega
nextpdf/artisanRenderer HTML de Chrome CDP (detectado automáticamente al construir el documento).
nextpdf/premiumNextPDF Pro y Enterprise: firma, PDF/A y Factur-X.
codeigniter4/queueGeneración asíncrona de PDF mediante GeneratePdfJob.

Para instalar el paquete:

Ventana de terminal
composer require nextpdf/codeigniter

Composer resuelve nextpdf/core y codeigniter4/framework según las restricciones anteriores. No es necesario editar un proveedor de servicios, un bundle ni un archivo de arranque.

CodeIgniter 4 examina los paquetes de Composer en busca de componentes del framework cuando Config\Modules::$discoverInComposer es true, el valor predeterminado del framework. El paquete incluye la clase NextPDF\CodeIgniter\Config\Services. Esta clase se encuentra bajo el espacio de nombres PSR-4 NextPDF\CodeIgniter\, asignado a src/CodeIgniter/. El autocargador PSR-4 de Composer convierte ese nombre de clase completamente cualificado en una ruta de archivo. El espacio de nombres de nivel superior es obligatorio (PSR-4 §x1.x2.p5, modal MUST). El prefijo del espacio de nombres se asigna al directorio base, por lo que la clase se resuelve en su archivo (PSR-4 §x1.x3).

La entrada de autocargado files de Composer del paquete (src/CodeIgniter/Helpers/pdf_helper.php) registra las dos funciones de ayuda, pdf() y pdf_document(). El Registrar del paquete también declara el ayudante pdf ante el cargador de ayudantes de CodeIgniter. Consultar /integrations/codeigniter/boot-and-discovery/ para ver la secuencia completa.

Confirmar que Composer resolvió el paquete:

Ventana de terminal
composer show nextpdf/codeigniter

Confirmar que CodeIgniter descubrió la clase Services. En cualquier controlador, o en una ruta corta de php spark, llamar a un servicio y verificar el tipo con una aserción:

<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Config\Services;
use NextPDF\Core\Document;
$document = Services::pdfDocument(false);
// $document is a fresh NextPDF\Core\Document instance.
\assert($document instanceof Document);

Si Services::pdfDocument() devuelve un Document, el descubrimiento funciona. Si la llamada devuelve null, el descubrimiento no se ejecutó. Consultar /integrations/codeigniter/troubleshooting/.

  • Si la aplicación anfitriona establece Config\Modules::$discoverInComposer en false, agregar nextpdf/codeigniter a la lista $composerPackages['only']. De lo contrario, el descubrimiento omite el paquete.
  • Un autocargador de Composer obsoleto puede ocultar la clase Services. Ejecutar composer dump-autoload después de actualizar.
  • El paquete declara codeigniter4/queue solo como dependencia de desarrollo. Una aplicación de producción que despache GeneratePdfJob debe requerir codeigniter4/queue como dependencia propia.

Instalar desde Packagist a través de HTTPS. Fijar las versiones resueltas en composer.lock. El paquete no agrega scripts en tiempo de instalación. Consultar /integrations/codeigniter/security-and-operations/.

  • El descubrimiento de Composer depende del autocargador PSR-4.
  • /integrations/codeigniter/overview/ — qué ofrece el paquete.
  • /integrations/codeigniter/quickstart/ — el primer PDF en un controlador.
  • /integrations/codeigniter/configuration/ — claves de configuración y anulaciones.
  • /integrations/codeigniter/boot-and-discovery/ — secuencia de descubrimiento detallada.