Ir al contenido

Instalar NextPDF Artisan

Instalar nextpdf/artisan con Composer. Composer instalará también la dependencia de runtime chrome-php/chrome. Después, asegurarse de que el proceso PHP pueda acceder a un binario de Chrome o Chromium.

Ventana de terminal
composer require nextpdf/artisan

El paquete declara las siguientes restricciones en composer.json:

RequisitoRestricciónNotas
php>=8.4 <9.0Solo PHP 8.4
nextpdf/core^3.0 || ^5.2Motor open source de NextPDF
chrome-php/chrome^1.15Biblioteca cliente CDP; se instala como dependencia transitiva
psr/log^3.0Punto opcional de inyección de logger

Composer resuelve chrome-php/chrome automáticamente. El binario de Chrome es una dependencia del sistema y Composer no lo instala nunca.

El puente necesita un ejecutable de Chrome o Chromium. De forma predeterminada, chrome-php/chrome detecta automáticamente un binario en las rutas habituales. Para fijar una ruta explícita, pasarla mediante la configuración; consultar /integrations/artisan/configuration/ y la página dedicada /integrations/artisan/chrome-renderer-setup/.

Ventana de terminal
# Debian / Ubuntu
apt-get install -y chromium
# RHEL / Fedora
dnf install -y chromium
# macOS (Homebrew)
brew install --cask chromium

Verificar que el binario se ejecute en modo headless antes de conectarlo a la aplicación:

Ventana de terminal
chromium --headless --dump-dom about:blank

Una ejecución correcta imprime un documento DOM vacío y termina con código 0. Un código de salida distinto de cero significa que falta el binario o alguna de sus bibliotecas compartidas. Corregirlo antes de continuar, porque el puente expone el mismo fallo como un ChromeRenderException en el momento del renderizado.

<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
use NextPDF\Artisan\ChromeHtmlRenderer;
require __DIR__ . '/vendor/autoload.php';
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig());
echo $renderer->getHtmlSecurityPolicy()->getName(), PHP_EOL;
// Prints: default

Esto crea el renderer y lee de nuevo la política de seguridad de HTML predeterminada sin lanzar Chrome. Con ello se confirma que el autocargado y los enlaces de contrato de nextpdf/core se resuelven. (Comportamiento verificado por tests/Unit/Artisan/ChromeHtmlRendererTest.php::usesDefaultHtmlSecurityPolicyWhenNoneInjected.)

En Docker, el sandbox de Chrome normalmente no puede iniciarse como PID 1 / root sin capacidades adicionales del kernel. El paquete expone el interruptor noSandbox para ese caso. Desactivar el sandbox de Chrome conlleva un coste de seguridad real. Las páginas /integrations/artisan/security-and-operations/ y /integrations/artisan/chrome-renderer-setup/ documentan ese coste y delimitan sus límites de forma explícita. No activar el interruptor sin leer esa sección.

  • chrome-php/chrome presente pero sin binario. Composer termina correctamente; el primer renderizado lanza ChromeRenderException y envuelve el fallo de lanzamiento. La comprobación de la biblioteca es independiente de la del binario.
  • chrome-php/chrome ausente. Si la biblioteca se elimina del autocargador, BrowserPool::getBrowser() lanza ChromeNotAvailableException con el comando exacto para remediarlo. (Verificado por tests/Unit/Artisan/BrowserPoolTest.php::getBrowserThrowsWhenChromePhpPackageIsUnavailable.)
  • Restricción de versión. nextpdf/core: ^3.0 || ^5.2: Artisan admite ambas líneas mayores del core. Fijar la versión del core que usa la aplicación.

Instalar el puente introduce un proceso externo (Chrome) dentro del límite de confianza. Revisar /integrations/artisan/security-and-operations/ antes de exponer cualquier ruta de renderizado a HTML proporcionado por el usuario.

  • /integrations/artisan/overview/
  • /integrations/artisan/configuration/
  • /integrations/artisan/quickstart/
  • /integrations/artisan/chrome-renderer-setup/
  • /integrations/artisan/security-and-operations/