Skip to content

Preguntas frecuentes

¿Por qué TCPDF-Next requiere PHP 8.5+?

PHP 8.5 introduce características del lenguaje que son fundamentales para la arquitectura de la biblioteca — incluyendo soporte del pipe operator, inferencia de tipos mejorada y semántica readonly mejorada. Apuntar a un runtime moderno permite que TCPDF-Next sea más pequeño, rápido y seguro por diseño en lugar de por soluciones alternativas.

Para una justificación más detallada, consulta ¿Por qué PHP 8.5?.

¿TCPDF-Next es un fork de TCPDF?

No. TCPDF-Next es una reescritura completa desde cero. No comparte código con la biblioteca TCPDF original. La parte "TCPDF" del nombre reconoce el dominio del problema (generación de PDF en PHP) y la influencia del proyecto heredado en la comunidad, pero la arquitectura, la superficie de API y la implementación son completamente nuevas.

¿Puedo usarlo sin Laravel?

Sí. El paquete tcpdf-next/core es completamente agnóstico de framework. Depende únicamente de PHP 8.5+ y tiene cero dependencias de framework. Puedes usarlo en cualquier aplicación PHP — Symfony, Slim, scripts PHP puros, herramientas CLI o workers de cola.

El paquete opcional tcpdf-next/laravel agrega conveniencias específicas de Laravel (service provider, Facade, publicación de configuración) pero no es requerido.

¿Cuál es la diferencia entre Core y Pro?

CorePro
LicenciaMITComercial
Generación de PDFCompletaCompleta
Tipografía avanzadaBásicaModelado OpenType, BiDi, ligaduras
Firmas digitalesNo incluidasPAdES / CAdES / X.509
PDF/A, PDF/XNo incluidosModos de cumplimiento completo
Motor de códigos de barrasCódigos de barras 1D1D + 2D (QR, DataMatrix, PDF417)
SoporteComunidad (GitHub Issues)Email prioritario + SLA

Core está listo para producción por sí solo. Pro lo extiende con funciones empresariales y de cumplimiento.

¿Cómo genero HTML a PDF con soporte completo de CSS3?

Usa el paquete Artisan (tcpdf-next/artisan). Proporciona un pipeline de renderizado que acepta HTML + CSS3 como entrada y produce una salida PDF con precisión de píxel, impulsado por TCPDF-Next Core internamente.

php
use Yeeefang\TcpdfNext\Artisan\HtmlRenderer;

$renderer = HtmlRenderer::create();
$renderer->loadHtml('<h1>Hello</h1><p style="color: navy;">Styled paragraph.</p>');
$renderer->save('/output/report.pdf');

Artisan soporta Flexbox, Grid, web fonts, media queries y la mayor parte de la especificación CSS3.

¿TCPDF-Next soporta CJK (chino, japonés, coreano)?

Sí. TCPDF-Next tiene soporte de primera clase para scripts CJK y diseños de texto complejos:

  • CjkFontValidator — valida y genera subconjuntos de archivos de fuentes CJK, asegurando la cobertura correcta de glifos.
  • BiDiResolver — maneja texto bidireccional (por ejemplo, inglés mezclado con árabe/hebreo).
  • ArabicShaper — aplica reglas de modelado contextual para árabe, farsi y urdu.

Incrusta cualquier fuente TrueType/OpenType compatible con CJK a través de la configuración de fuentes, y el renderizado de texto funciona automáticamente.

php
$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/NotoSansCJK-Regular.ttc', alias: 'NotoSansCJK');
});

$doc->setFont('NotoSansCJK', size: 12);
$doc->cell(text: '你好世界');        // Chino
$doc->cell(text: 'こんにちは世界');   // Japonés
$doc->cell(text: '안녕하세요 세계');   // Coreano

¿TCPDF-Next está listo para producción?

Sí. La biblioteca cuenta con un riguroso pipeline de pruebas y análisis:

  • 908+ tests que cubren escenarios unitarios, de integración y de regresión visual.
  • 28,881+ aserciones en toda la suite de pruebas.
  • PHPStan Level 10 — el nivel de análisis estático más estricto — pasa con cero errores.
  • 100% declare(strict_types=1) en cada archivo fuente.

La suite de pruebas se ejecuta en cada pull request y debe pasar antes de hacer merge.

¿Cómo reporto una vulnerabilidad de seguridad?

No abras un issue público en GitHub. En su lugar, usa GitHub Security Advisories para reportar vulnerabilidades de forma privada. Los mantenedores evaluarán el reporte, coordinarán una corrección y publicarán una versión de seguridad.

Para más información, consulta el archivo SECURITY.md en el repositorio.

Distribuido bajo la licencia LGPL-3.0-or-later.