Базовое использование
На этой странице рассматриваются фундаментальные строительные блоки каждого документа TCPDF-Next: создание документа, добавление страниц, вывод текста, встраивание изображений и формирование результата.
Создание документа
Статическая фабрика Document::create() — единственная точка входа для каждого PDF:
use Yeeefang\TcpdfNext\Core\Document;
$doc = Document::create();Все параметры опциональны — значения по умолчанию создают документ A4 в книжной ориентации с измерениями в миллиметрах. Полный список параметров смотрите на странице Конфигурация.
Добавление страниц
Документ начинается пустым. Вызовите addPage() хотя бы один раз перед записью контента:
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::A3 | 297 × 420 мм |
PageSize::A4 | 210 × 297 мм |
PageSize::A5 | 148 × 210 мм |
PageSize::Letter | 215.9 × 279.4 мм |
PageSize::Legal | 215.9 × 355.6 мм |
Пользовательские размеры поддерживаются через PageSize::custom(width, height).
Установка шрифтов
TCPDF-Next включает стандартные базовые PDF-шрифты, а также семейство DejaVu Sans с поддержкой Unicode.
// Встроенный базовый шрифт
$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 шрифт, затем используйте его по псевдониму:
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()
Выводит однострочную ячейку. Идеален для меток, ячеек таблиц и коротких текстов:
$doc->cell(
width: 80,
height: 10,
text: 'Invoice #1042',
border: true,
align: Align::Center,
);multiCell()
Выводит текст с автоматическим переносом строк в пределах заданной ширины. Курсор перемещается вниз после каждого вызова:
$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). Не перемещает курсор:
$doc->text(x: 105, y: 20, text: 'Centered Title', align: Align::Center);write()
Записывает инлайн-текст в текущей позиции курсора. Поддерживает ссылки и естественно встраивается в абзац:
$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.');Изображения
Из файлового пути
$doc->imageFromFile(
path: '/images/logo.png',
x: 15,
y: 15,
width: 40,
);Из строки или ресурса
$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.
Сохранение на диск
$doc->save('/reports/invoice-1042.pdf');Отправка в браузер
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-данных
$pdfBytes = $doc->getPdfData();
// Используйте с PSR-7 ответом, очередью задач, загрузкой в S3 и т.д.Enum OutputDestination
| Значение | Поведение |
|---|---|
OutputDestination::Inline | Отправляет в браузер для просмотра |
OutputDestination::Download | Отправляет в браузер как загрузку файла |
OutputDestination::File | Записывает в файл (используется внутренне методом save()) |
OutputDestination::String | Возвращает сырую бинарную строку (используется внутренне методом getPdfData()) |
Fluent API
Большинство сеттеров возвращают $this, позволяя использовать цепочку вызовов:
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');Полный пример
Собираем всё вместе:
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 — ответы на частые вопросы.