Пакет 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
| Интерфейс | Привязка | Область |
|---|---|---|
PdfDocumentInterface | Document::create() | Factory (новый при каждом разрешении) |
FontManagerInterface | FontManager | Scoped (свежий при каждом запросе, Octane-безопасный) |
SignerInterface | Настраивается из config/tcpdf-next.php | Factory |
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 generationDependency 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();
}
}Далее
- Facade Pdf — Статический доступ и хелперы для тестирования
- HTTP-ответы — Инлайн-отображение и безопасные загрузки
- Задания очереди — Асинхронная генерация PDF с callback-ами
- Конфигурация — Полный справочник конфигурации
