Skip to content

Paquete Laravel

TCPDF-Next Laravel
Laravel · LGPL-3.0

El paquete Laravel (yeeefang/tcpdf-next-laravel) proporciona integración de primera clase con Laravel 12 con:

  • ServiceProvider auto-descubierto -- Bindings DI, servicios con scope seguro para Octane
  • Facade Pdf -- Acceso estático conveniente
  • PdfResponse -- Helpers de respuesta HTTP seguros (inline/descarga)
  • GeneratePdfJob -- Generación de PDF asíncrona basada en colas

Instalación

bash
composer require yeeefang/tcpdf-next-laravel

Requisitos: Laravel ^12.0

El ServiceProvider es auto-descubierto. Publica la configuración:

bash
php artisan vendor:publish --tag=tcpdf-next-config

Inicio rápido

php
use Yeeefang\TcpdfNext\Laravel\Facades\Pdf;
use Yeeefang\TcpdfNext\Laravel\Http\PdfResponse;

class InvoiceController extends Controller
{
    public function download(Invoice $invoice)
    {
        $pdf = Pdf::create()
            ->setTitle("Invoice #{$invoice->number}")
            ->addPage()
            ->setFont('DejaVuSans', '', 12)
            ->cell(0, 10, "Invoice #{$invoice->number}");

        return PdfResponse::download($pdf, "invoice-{$invoice->number}.pdf");
    }
}

Bindings del Service Provider

InterfaceBindingScope
PdfDocumentInterfaceDocument::create()Factory (nuevo por resolución)
FontManagerInterfaceFontManagerScoped (nuevo por request, seguro para Octane)
SignerInterfaceConfigurado desde config/tcpdf-next.phpFactory

El TcpdfServiceProvider fusiona valores predeterminados sensatos desde el archivo de configuración incluido y registra todos los bindings antes de que tu aplicación arranque. En entornos Laravel Octane, los bindings con scope se limpian automáticamente entre requests para prevenir fugas de estado.

Estructura del paquete

Yeeefang\TcpdfNext\Laravel\
├── TcpdfServiceProvider       # Bindings DI, publicación de config
├── Facades\
│   └── Pdf                    # Proxy estático al factory de Document
├── Http\
│   └── PdfResponse            # Helpers de respuesta inline / descarga
└── Jobs\
    └── GeneratePdfJob         # Generación de PDF asíncrona en cola

Inyección de dependencias

En lugar del Facade, inyecta el contrato directamente:

php
use Yeeefang\TcpdfNext\Contracts\PdfDocumentInterface;

class ReportService
{
    public function __construct(
        private readonly PdfDocumentInterface $pdf,
    ) {}

    public function generate(array $data): string
    {
        return $this->pdf
            ->addPage()
            ->setFont('Helvetica', 'B', 16)
            ->cell(0, 10, 'Monthly Report')
            ->setFont('Helvetica', '', 12)
            ->cell(0, 10, "Generated: " . now()->format('F j, Y'))
            ->output();
    }
}

Próximos pasos

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