Skip to content

Facade Pdf

Facade Pdf предоставляет удобный статический прокси к привязке PdfDocumentInterface, зарегистрированной TcpdfServiceProvider. Все значения конфигурации из config/tcpdf-next.php применяются автоматически.

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

Создание документа

Pdf::create() разрешает свежий экземпляр Document из контейнера со всеми предустановленными значениями конфигурации:

php
$pdf = Pdf::create();

$pdf->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Hello from Laravel!')
    ->save(storage_path('app/hello.pdf'));

Каждый вызов create() возвращает новый экземпляр. Документы никогда не разделяются между вызовами.

Fluent API

Все методы Document доступны через Facade и возвращают static для цепочки:

php
$pdf = Pdf::create()
    ->setTitle('Quarterly Report')
    ->setAuthor('Finance Team')
    ->setMargins(left: 15, top: 20, right: 15)
    ->addPage()
    ->setFont('Helvetica', 'B', 18)
    ->cell(0, 12, 'Q1 2026 Report')
    ->ln()
    ->setFont('Helvetica', '', 11)
    ->multiCell(0, 6, $reportBody);

Привязка конфигурации

Facade читает значения по умолчанию из config/tcpdf-next.php. Вы можете переопределить любую настройку для конкретного документа:

php
// Uses config defaults (A4 portrait, Helvetica 11pt)
$default = Pdf::create();

// Override page format for this document only
$receipt = Pdf::create()
    ->setPageFormat('A5')
    ->setMargins(left: 10, top: 10, right: 10);

См. Конфигурация для полного справочника.

Справочник класса Facade

php
namespace Yeeefang\TcpdfNext\Laravel\Facades;

use Illuminate\Support\Facades\Facade;

/**
 * @method static \Yeeefang\TcpdfNext\Core\Document create()
 * @method static void fake()
 * @method static void assertCreated()
 * @method static void assertCreatedCount(int $count)
 *
 * @see \Yeeefang\TcpdfNext\Core\Document
 */
class Pdf extends Facade
{
    protected static function getFacadeAccessor(): string
    {
        return \Yeeefang\TcpdfNext\Contracts\PdfDocumentInterface::class;
    }
}

Тестирование с Pdf::fake()

Замените реальную привязку фейком для утверждений без генерации реальных PDF-байтов:

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

public function test_invoice_generates_pdf(): void
{
    Pdf::fake();

    $response = $this->get('/invoices/42/pdf');
    $response->assertOk();

    Pdf::assertCreated();
    Pdf::assertCreatedCount(1);
}

Фейк записывает каждый вызов метода, позволяя инспектировать fluent-цепочку:

php
Pdf::fake();

$this->get('/invoices/42/pdf');

Pdf::assertCreated(function ($pdf) {
    return $pdf->getTitle() === 'Invoice #42'
        && $pdf->getPageCount() >= 1;
});

Далее

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