Skip to content

Конфигурация

TCPDF-Next поставляется с разумными настройками по умолчанию, которые работают сразу из коробки. Каждый параметр может быть переопределён при создании документа или позднее через fluent-сеттеры.

Настройки документа по умолчанию

При вызове Document::create() применяются следующие значения по умолчанию, если вы не укажете иное:

ПараметрПо умолчаниюОписание
Размер страницыPageSize::A4ISO A4 (210 × 297 мм)
ОриентацияOrientation::PortraitКнижная ориентация
Единица измеренияUnit::MillimeterВсе измерения в миллиметрах
Левое поле15 ммЛевое поле страницы
Верхнее поле27 ммВерхнее поле страницы
Правое поле15 ммПравое поле страницы
Нижнее поле25 ммНижнее поле страницы
Автоматический разрыв страницыtrueАвтоматический разрыв вблизи нижнего поля
ШрифтHelvetica, 12 ptШрифт и размер по умолчанию
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;

$doc = Document::create(
    pageSize: PageSize::Letter,
    orientation: Orientation::Landscape,
    unit: Unit::Inch,
);

Поля

Поля могут быть установлены глобально или для каждой страницы:

php
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

// Глобальные поля
$doc->setMargins(new Margin(
    left: 20,
    top: 30,
    right: 20,
    bottom: 25,
));

// Переопределение для конкретной страницы
$doc->addPage(
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Пути к шрифтам и директории

TCPDF-Next ищет файлы шрифтов в настраиваемом наборе директорий. Встроенные шрифты (Helvetica, Courier, Times, Symbol, ZapfDingbats) всегда доступны. Для пользовательских или Unicode-шрифтов зарегистрируйте дополнительные пути:

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

$doc->configureFonts(function (FontConfig $config): void {
    // Добавить директорию с .ttf / .otf файлами
    $config->addDirectory('/path/to/my/fonts');

    // Добавить отдельный файл шрифта с псевдонимом
    $config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});

TIP

Файлы шрифтов по умолчанию встраиваются как подмножества, сохраняя компактность PDF. Полное встраивание может быть включено для каждого шрифта при необходимости.

Настройки шифрования

Шифрование PDF настраивается через объект значений EncryptionConfig:

php
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;

$doc->setEncryption(new EncryptionConfig(
    level: EncryptionLevel::AES256,
    userPassword: 'reader-pass',
    ownerPassword: 'admin-pass',
    permissions: [
        Permission::Print,
        Permission::Copy,
    ],
));
УровеньОписание
EncryptionLevel::RC4_40Устаревший 40-битный RC4 (не рекомендуется)
EncryptionLevel::RC4_128128-битный RC4
EncryptionLevel::AES128128-битный AES
EncryptionLevel::AES256256-битный AES (рекомендуется)

Настройки Tagged PDF

Теговые (доступные) PDF улучшают поддержку экранных читалок и требуются стандартом PDF/UA. Включите теги глобально:

php
$doc->enableTaggedPdf();

// При необходимости укажите язык документа для доступности
$doc->setLanguage('en');

Когда режим Tagged PDF активен, структурные теги (<P>, <H1><H6>, <Table> и т.д.) автоматически генерируются API для текста и таблиц.

Детерминированный режим

По умолчанию PDF содержат временные метки и уникальные идентификаторы, которые делают каждый вывод уникальным. Детерминированный режим удаляет их, создавая побайтово идентичный вывод для одинаковых входных данных — полезно для snapshot-тестирования и воспроизводимых сборок:

php
$doc->enableDeterministicMode();

WARNING

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

Полный пример конфигурации

Ниже представлен единый фрагмент, показывающий все основные параметры конфигурации вместе:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Core\Enums\PageSize;
use Yeeefang\TcpdfNext\Core\Enums\Orientation;
use Yeeefang\TcpdfNext\Core\Enums\Unit;
use Yeeefang\TcpdfNext\Core\Enums\EncryptionLevel;
use Yeeefang\TcpdfNext\Core\Enums\Permission;
use Yeeefang\TcpdfNext\Core\Config\EncryptionConfig;
use Yeeefang\TcpdfNext\Core\Config\FontConfig;
use Yeeefang\TcpdfNext\Core\ValueObjects\Margin;

$doc = Document::create(
    pageSize: PageSize::A4,
    orientation: Orientation::Portrait,
    unit: Unit::Millimeter,
);

// Поля
$doc->setMargins(new Margin(
    left: 15,
    top: 27,
    right: 15,
    bottom: 25,
));

// Шрифты
$doc->configureFonts(function (FontConfig $config): void {
    $config->addDirectory('/path/to/fonts');
});

// Шифрование
$doc->setEncryption(new EncryptionConfig(
    level: EncryptionLevel::AES256,
    userPassword: '',
    ownerPassword: 'secret',
    permissions: [Permission::Print],
));

// Доступность
$doc->enableTaggedPdf();
$doc->setLanguage('en');

// Детерминированный вывод (для тестов)
// $doc->enableDeterministicMode();

// Метаданные
$doc->setTitle('Company Report');
$doc->setAuthor('TCPDF-Next');
$doc->setSubject('Monthly Summary');
$doc->setKeywords('report, finance, 2026');

$doc->addPage();
$doc->cell(text: 'Hello, configured world!');
$doc->save('/tmp/configured.pdf');

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