Skip to content

Por que PHP 8.5+?

O TCPDF-Next requer PHP 8.5+ por design. Isso não é uma restrição arbitrária -- cada recurso moderno do PHP usado na biblioteca beneficia diretamente a qualidade do código, segurança e experiência do desenvolvedor.

Recursos do PHP 8.5 que Utilizamos

RecursoComo Beneficia o TCPDF-Next
Readonly classesValue objects imutáveis (PageSize, Margin, Color, FontInfo) -- sem bugs de mutação
Backed enumsConfiguração type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
Named argumentsChamadas de API auto-documentáveis -- setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Union/intersection typesTipos de parâmetro precisos em toda a API
DNF typesRestrições de tipo complexas para validação interna
#[\SensitiveParameter]Senhas e chaves privadas nunca aparecem em stack traces (Aes256Encryptor, CertificateInfo, TsaClient)
#[\NoDiscard]Avisos do compilador se você ignorar valores de retorno de métodos críticos (FontManager::registerFont(), FormFlattener::flatten())
Property hooksPadrões de getter/setter limpos sem boilerplate
Pipe operatorTransformações de dados internas simplificadas
FibersBase para geração assíncrona de PDF em queue workers

"Mas Meu Servidor Roda PHP 8.1..."

Use Docker como camada de isolamento. Sua aplicação pode rodar qualquer versão do PHP -- o TCPDF-Next roda dentro de um container.

Dockerfile Mínimo

dockerfile
FROM php:8.5-cli

# Install required extensions
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

# Install 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 Equipes

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

Laravel com Docker

Se sua aplicação Laravel roda PHP 8.2 mas você precisa do TCPDF-Next, execute a geração de PDF como um microserviço:

yaml
services:
  app:
    image: php:8.2-fpm
    # Your Laravel app

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

volumes:
  shared-output:

Ou use o sistema de queue do Laravel para despachar geração de PDF para um worker PHP 8.5.

🐳 Docker for Legacy PHP Environments
Docker é a abordagem recomendada para equipes que não podem fazer upgrade da versão PHP em produção. O processo de geração de PDF é isolado -- ele lê a entrada, grava um arquivo PDF e encerra. Sem estado compartilhado, sem preocupações de compatibilidade.

O Trade-off

Ao exigir PHP 8.5+, o TCPDF-Next ganha:

  • Codebase menor -- Recursos modernos substituem centenas de linhas de workarounds
  • Segurança de tipos mais forte -- PHPStan Level 10 com zero erros
  • Melhor segurança -- #[\SensitiveParameter] previne vazamento de credenciais em logs
  • Objetos imutáveis -- Readonly classes eliminam uma categoria inteira de bugs
  • Código auto-documentável -- Enums substituem strings mágicas, named arguments substituem arrays posicionais

A biblioteca que vai te servir pela próxima década deve ser construída sobre os recursos de linguagem da próxima década.

Distribuído sob a licença LGPL-3.0-or-later.