Skip to content

Пакет Laravel

TCPDF-Next Laravel
Laravel · LGPL-3.0

Пакет Laravel (yeeefang/tcpdf-next-laravel) обеспечивает первоклассную интеграцию с Laravel 12:

  • Автоматически обнаруживаемый ServiceProvider — DI-привязки, Octane-безопасные scoped-сервисы
  • Facade Pdf — удобный статический доступ
  • PdfResponse — безопасные хелперы HTTP-ответов (inline/download)
  • GeneratePdfJob — асинхронная генерация PDF через очередь

Установка

bash
composer require yeeefang/tcpdf-next-laravel

Требования: Laravel ^12.0

ServiceProvider обнаруживается автоматически. Опубликуйте конфигурацию:

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

Быстрый старт

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");
    }
}

Привязки Service Provider

ИнтерфейсПривязкаОбласть
PdfDocumentInterfaceDocument::create()Factory (новый при каждом разрешении)
FontManagerInterfaceFontManagerScoped (свежий при каждом запросе, Octane-безопасный)
SignerInterfaceНастраивается из config/tcpdf-next.phpFactory

TcpdfServiceProvider объединяет разумные значения по умолчанию из поставляемого конфиг-файла и регистрирует все привязки до загрузки вашего приложения. В окружениях Laravel Octane scoped-привязки автоматически сбрасываются между запросами для предотвращения утечки состояния.

Структура пакета

Yeeefang\TcpdfNext\Laravel\
├── TcpdfServiceProvider       # DI bindings, config publishing
├── Facades\
│   └── Pdf                    # Static proxy to Document factory
├── Http\
│   └── PdfResponse            # Inline / download response helpers
└── Jobs\
    └── GeneratePdfJob         # Queueable async PDF generation

Dependency Injection

Вместо Facade можно инжектировать контракт напрямую:

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();
    }
}

Далее

Распространяется по лицензии LGPL-3.0-or-later.