Ir al contenido

Instalar el puente de Cloudflare para NextPDF

Instalar el paquete con Composer. A continuación, añadir un cliente HTTP PSR-18 y una implementación de fábrica PSR-17. El puente declara las interfaces; no incluye un cliente HTTP concreto.

El puente lee estos requisitos desde la sección require de composer.json:

DependenciaRestricción
PHP>=8.4 <9.0
nextpdf/core^3.0
psr/http-client (PSR-18)^1.0
psr/http-factory (PSR-17)^1.1
psr/log (PSR-3)^3.0

El paquete carga automáticamente NextPDF\Cloudflare\ desde src/Cloudflare/ (PSR-4). Supera el análisis estático en el nivel 10 de PHPStan y no incluye ninguna línea base del analizador.

Ventana de terminal
composer require nextpdf/cloudflare

El constructor del puente requiere un ClientInterface PSR-18, un RequestFactoryInterface PSR-17 y un StreamFactoryInterface PSR-17. La ruta de transporte fijada también utiliza un ResponseFactoryInterface PSR-17 cuando se proporciona uno. Cualquier implementación conforme es válida. El README menciona Guzzle como ejemplo:

Ventana de terminal
composer require guzzlehttp/guzzle

Guzzle 7 proporciona las cuatro interfaces de fábrica PSR-17 y el cliente PSR-18. Symfony HttpClient, Buzz y otras pilas conformes son igual de válidas. Por diseño, el paquete es agnóstico respecto al proveedor. La prueba tests/Unit/Architecture/PsrConformanceTest.php verifica que el paquete depende únicamente de contratos PSR, no de ningún cliente concreto.

Cuando el Worker no está disponible y el respaldo está habilitado, el puente puede delegar en un renderizador local. Ese renderizador se proporciona a través de NextPDF\Cloudflare\Contract\LocalRendererFactoryInterface. El bloque suggest de composer.json indica la implementación propia:

Ventana de terminal
composer require nextpdf/artisan

Instalar nextpdf/artisan no es suficiente por sí solo. También es necesario pasar un LocalRendererFactoryInterface al constructor del renderizador. El puente detecta los casos en que Artisan está instalado pero no se ha conectado ninguna fábrica. Entonces lanza una CloudflareNotAvailableException cuyo mensaje lo indica explícitamente. Consultar /integrations/cloudflare/production-usage/ para ver cómo realizar la conexión.

<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Cloudflare\CloudflareRendererConfig;
$config = new CloudflareRendererConfig(
workerUrl: 'https://pdf-renderer.example.workers.dev/render',
apiToken: 'placeholder',
);
echo $config->isValid() ? "ready\n" : "incomplete\n";

isValid() devuelve true cuando workerUrl y apiToken no están vacíos. No accede a la red. Es una comprobación pura de integridad de la configuración, adecuada para una prueba de humo durante el despliegue.

  • /integrations/cloudflare/configuration/ — toda la superficie de configuración.
  • /integrations/cloudflare/quickstart/ — la primera representación.
  • /integrations/cloudflare/boot-and-discovery/ — conectar el puente en un contenedor de framework.