Paquete Laravel
Laravel · LGPL-3.0El 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-laravelRequisitos: Laravel ^12.0
El ServiceProvider es auto-descubierto. Publica la configuración:
bash
php artisan vendor:publish --tag=tcpdf-next-configInicio 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
| Interface | Binding | Scope |
|---|---|---|
PdfDocumentInterface | Document::create() | Factory (nuevo por resolución) |
FontManagerInterface | FontManager | Scoped (nuevo por request, seguro para Octane) |
SignerInterface | Configurado desde config/tcpdf-next.php | Factory |
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 colaInyecció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
- Facade Pdf -- Acceso estático y helpers de testing
- Respuestas HTTP -- Visualización inline y descargas seguras
- Queue Jobs -- Generación de PDF asíncrona con callbacks
- Configuración -- Referencia completa de configuración
