Skip to content

Базовое использование

На этой странице рассматриваются фундаментальные строительные блоки каждого документа TCPDF-Next: создание документа, добавление страниц, вывод текста, встраивание изображений и формирование результата.

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

Статическая фабрика Document::create() — единственная точка входа для каждого PDF:

php
use Yeeefang\TcpdfNext\Core\Document;

$doc = Document::create();

Все параметры опциональны — значения по умолчанию создают документ A4 в книжной ориентации с измерениями в миллиметрах. Полный список параметров смотрите на странице Конфигурация.

Добавление страниц

Документ начинается пустым. Вызовите addPage() хотя бы один раз перед записью контента:

php
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

// Добавить страницу с настройками документа по умолчанию
$doc->addPage();

// Добавить горизонтальную страницу Letter с пользовательскими полями
$doc->addPage(
    pageSize: PageSize::Letter,
    orientation: Orientation::Landscape,
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Доступные размеры страниц

PageSize — это backed enum, включающий все стандартные размеры ISO и североамериканские форматы:

Значение enumРазмеры
PageSize::A3297 × 420 мм
PageSize::A4210 × 297 мм
PageSize::A5148 × 210 мм
PageSize::Letter215.9 × 279.4 мм
PageSize::Legal215.9 × 355.6 мм

Пользовательские размеры поддерживаются через PageSize::custom(width, height).

Установка шрифтов

TCPDF-Next включает стандартные базовые PDF-шрифты, а также семейство DejaVu Sans с поддержкой Unicode.

php
// Встроенный базовый шрифт
$doc->setFont('Helvetica', size: 12);

// Встроенный Unicode-шрифт
$doc->setFont('DejaVuSans', size: 10);

// Жирный / Курсивный варианты
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 14);
$doc->setFont('Helvetica', style: FontStyle::BoldItalic, size: 14);

Пользовательские шрифты

Зарегистрируйте TrueType или OpenType шрифт, затем используйте его по псевдониму:

php
use Yeeefang\TcpdfNext\Core\Config\FontConfig;

$doc->configureFonts(function (FontConfig $config): void {
    $config->addFont('/fonts/Inter-Regular.ttf', alias: 'Inter');
});

$doc->setFont('Inter', size: 11);

Вывод текста

TCPDF-Next предоставляет четыре метода для размещения текста на странице. Каждый служит разным задачам компоновки.

cell()

Выводит однострочную ячейку. Идеален для меток, ячеек таблиц и коротких текстов:

php
$doc->cell(
    width: 80,
    height: 10,
    text: 'Invoice #1042',
    border: true,
    align: Align::Center,
);

multiCell()

Выводит текст с автоматическим переносом строк в пределах заданной ширины. Курсор перемещается вниз после каждого вызова:

php
$doc->multiCell(
    width: 0,        // 0 = вся доступная ширина
    height: 7,
    text: 'This is a longer paragraph that will wrap across multiple lines '
        . 'based on the available width and the current font size.',
);

text()

Размещает текст в абсолютной позиции (x, y). Не перемещает курсор:

php
$doc->text(x: 105, y: 20, text: 'Centered Title', align: Align::Center);

write()

Записывает инлайн-текст в текущей позиции курсора. Поддерживает ссылки и естественно встраивается в абзац:

php
$doc->write(height: 5, text: 'Visit the ');
$doc->write(height: 5, text: 'TCPDF-Next docs', link: 'https://tcpdf-next.dev');
$doc->write(height: 5, text: ' for more information.');

Изображения

Из файлового пути

php
$doc->imageFromFile(
    path: '/images/logo.png',
    x: 15,
    y: 15,
    width: 40,
);

Из строки или ресурса

php
$binary = file_get_contents('https://example.com/photo.jpg');

$doc->image(
    data: $binary,
    x: 15,
    y: 60,
    width: 50,
    type: 'JPEG',
);

Поддерживаемые форматы: PNG, JPEG, GIF, SVG, WebP.

Сохранение и вывод

TCPDF-Next предлагает несколько способов получения итогового PDF.

Сохранение на диск

php
$doc->save('/reports/invoice-1042.pdf');

Отправка в браузер

php
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

// Отображение в браузере (Content-Disposition: inline)
$doc->output('invoice.pdf', OutputDestination::Inline);

// Принудительная загрузка (Content-Disposition: attachment)
$doc->output('invoice.pdf', OutputDestination::Download);

Получение сырых PDF-данных

php
$pdfBytes = $doc->getPdfData();

// Используйте с PSR-7 ответом, очередью задач, загрузкой в S3 и т.д.

Enum OutputDestination

ЗначениеПоведение
OutputDestination::InlineОтправляет в браузер для просмотра
OutputDestination::DownloadОтправляет в браузер как загрузку файла
OutputDestination::FileЗаписывает в файл (используется внутренне методом save())
OutputDestination::StringВозвращает сырую бинарную строку (используется внутренне методом getPdfData())

Fluent API

Большинство сеттеров возвращают $this, позволяя использовать цепочку вызовов:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;

$pdf = Document::create()
    ->setTitle('Monthly Report')
    ->setAuthor('Acme Corp')
    ->addPage(pageSize: PageSize::A4, orientation: Orientation::Portrait)
    ->setFont('Helvetica', style: FontStyle::Bold, size: 18)
    ->cell(width: 0, height: 15, text: 'Monthly Report — February 2026', align: Align::Center)
    ->ln()
    ->setFont('Helvetica', size: 11)
    ->multiCell(width: 0, height: 6, text: 'This report summarises key metrics...')
    ->save('/reports/monthly.pdf');

Полный пример

Собираем всё вместе:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\Align;
use Yeeefang\TcpdfNext\Core\Enums\FontStyle;
use Yeeefang\TcpdfNext\Core\Enums\OutputDestination;

$doc = Document::create();

$doc->setTitle('Hello World');
$doc->setAuthor('TCPDF-Next');

$doc->addPage();

// Заголовок
$doc->setFont('Helvetica', style: FontStyle::Bold, size: 20);
$doc->cell(width: 0, height: 15, text: 'Hello, TCPDF-Next!', align: Align::Center);
$doc->ln(20);

// Тело
$doc->setFont('DejaVuSans', size: 12);
$doc->multiCell(
    width: 0,
    height: 7,
    text: 'TCPDF-Next is a modern, type-safe PDF generation library for PHP 8.5+. '
        . 'It provides a clean API, strict static analysis, and comprehensive Unicode support.',
);

// Логотип
$doc->imageFromFile(path: __DIR__ . '/logo.png', x: 15, y: 80, width: 30);

// Вывод
$doc->output('hello.pdf', OutputDestination::Download);

Следующие шаги

  • Конфигурация — тонкая настройка параметров по умолчанию, шифрования и доступности.
  • Конфигурация — как Core, Pro и Artisan работают вместе.
  • FAQ — ответы на частые вопросы.

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