Skip to content

¿Por qué PHP 8.5+?

TCPDF-Next requiere PHP 8.5+ por diseño. Esto no es una restricción arbitraria — cada funcionalidad moderna de PHP utilizada en la biblioteca beneficia directamente la calidad del código, la seguridad y la experiencia del desarrollador.

Funcionalidades de PHP 8.5 que usamos

FuncionalidadCómo beneficia a TCPDF-Next
Clases readonlyValue objects inmutables (PageSize, Margin, Color, FontInfo) — sin bugs de mutación
Backed enumsConfiguración type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
Named argumentsLlamadas de API auto-documentadas — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Tipos union/intersectionTipos de parámetros precisos a través de la API
Tipos DNFRestricciones de tipo complejas para validación interna
#[\SensitiveParameter]Contraseñas y claves privadas nunca aparecen en stack traces (Aes256Encryptor, CertificateInfo, TsaClient)
#[\NoDiscard]Advertencias del compilador si ignoras valores de retorno de métodos críticos (FontManager::registerFont(), FormFlattener::flatten())
Property hooksPatrones getter/setter limpios sin boilerplate
Operador pipeTransformaciones de datos internas simplificadas
FibersBase para generación de PDF asíncrona en queue workers

"Pero mi servidor ejecuta PHP 8.1..."

Usa Docker como capa de aislamiento. Tu aplicación puede ejecutar cualquier versión de PHP — TCPDF-Next se ejecuta dentro de un contenedor.

Dockerfile mínimo

dockerfile
FROM php:8.5-cli

# Instalar extensiones requeridas
RUN apt-get update && apt-get install -y \
    libicu-dev libpng-dev libjpeg-dev libwebp-dev \
    && docker-php-ext-configure gd --with-jpeg --with-webp \
    && docker-php-ext-install gd intl

# Instalar Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

Docker Compose para equipos

yaml
services:
  pdf-generator:
    build: .
    volumes:
      - ./output:/app/output
    command: php generate-pdf.php

Laravel con Docker

Si tu aplicación Laravel ejecuta PHP 8.2 pero necesitas TCPDF-Next, ejecuta la generación de PDF como un microservicio:

yaml
services:
  app:
    image: php:8.2-fpm
    # Tu aplicación Laravel

  pdf-service:
    build:
      context: ./pdf-service
      dockerfile: Dockerfile
    image: php:8.5-cli
    volumes:
      - shared-output:/output

volumes:
  shared-output:

O usa el sistema de colas de Laravel para despachar la generación de PDF a un worker PHP 8.5.

🐳 Docker for Legacy PHP Environments
Docker es el enfoque recomendado para equipos que no pueden actualizar su versión de PHP en producción. El proceso de generación de PDF está aislado — lee la entrada, escribe un archivo PDF y termina. Sin estado compartido, sin problemas de compatibilidad.

La compensación

Al requerir PHP 8.5+, TCPDF-Next gana:

  • Código base más pequeño — Las funcionalidades modernas reemplazan cientos de líneas de workarounds
  • Seguridad de tipos más fuerte — PHPStan Level 10 con cero errores
  • Mejor seguridad#[\SensitiveParameter] previene fugas de credenciales en logs
  • Objetos inmutables — Las clases readonly eliminan una categoría completa de bugs
  • Código auto-documentado — Los enums reemplazan strings mágicos, named arguments reemplazan arrays posicionales

La biblioteca que te servirá durante la próxima década debería estar construida sobre las funcionalidades del lenguaje de la próxima década.

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