Skip to content

Configuração

O TCPDF-Next vem com padrões sensatos que funcionam imediatamente. Toda configuração pode ser substituída no momento da criação do documento ou posteriormente via setters fluentes.

Padrões do Documento

Quando você chama Document::create(), os seguintes padrões se aplicam, a menos que você especifique o contrário:

ConfiguraçãoPadrãoDescrição
Tamanho da páginaPageSize::A4ISO A4 (210 × 297 mm)
OrientaçãoOrientation::PortraitModo retrato
UnidadeUnit::MillimeterTodas as medidas em milímetros
Margem esquerda15 mmMargem esquerda da página
Margem superior27 mmMargem superior da página
Margem direita15 mmMargem direita da página
Margem inferior25 mmMargem inferior da página
Quebra automáticatrueQuebra de página automática próxima à margem inferior
FonteHelvetica, 12 ptFamília e tamanho de fonte padrão
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,
);

Margens

As margens podem ser definidas globalmente ou por página:

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

// Margens globais
$doc->setMargins(new Margin(
    left: 20,
    top: 30,
    right: 20,
    bottom: 25,
));

// Substituição para uma página específica
$doc->addPage(
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Caminhos e Diretórios de Fontes

O TCPDF-Next procura arquivos de fontes em um conjunto configurável de diretórios. As fontes embutidas (Helvetica, Courier, Times, Symbol, ZapfDingbats) estão sempre disponíveis. Para fontes personalizadas ou Unicode, registre caminhos adicionais:

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

$doc->configureFonts(function (FontConfig $config): void {
    // Adicionar um diretório contendo arquivos .ttf / .otf
    $config->addDirectory('/path/to/my/fonts');

    // Adicionar um arquivo de fonte individual com um alias de família
    $config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});

TIP

Os arquivos de fontes são incorporados como subconjuntos por padrão, mantendo a saída PDF compacta. A incorporação completa pode ser habilitada por fonte quando necessário.

Configurações de Criptografia

A criptografia PDF é configurada através do value object 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,
    ],
));
NívelDescrição
EncryptionLevel::RC4_40RC4 legado de 40 bits (não recomendado)
EncryptionLevel::RC4_128RC4 de 128 bits
EncryptionLevel::AES128AES de 128 bits
EncryptionLevel::AES256AES de 256 bits (recomendado)

Configurações de PDF com Tags

PDFs com tags (acessíveis) melhoram o suporte a leitores de tela e são exigidos pelo PDF/UA. Habilite a marcação globalmente:

php
$doc->enableTaggedPdf();

// Opcionalmente defina o idioma do documento para acessibilidade
$doc->setLanguage('en');

Quando o modo de PDF com tags está ativo, tags estruturais (<P>, <H1>-<H6>, <Table>, etc.) são emitidas automaticamente pelas APIs de texto e tabela.

Modo Determinístico

Por padrão, os PDFs contêm timestamps e identificadores únicos que tornam cada saída única. O modo determinístico remove esses elementos, produzindo saída byte-a-byte idêntica para a mesma entrada — útil para testes de snapshot e builds reproduzíveis:

php
$doc->enableDeterministicMode();

WARNING

O modo determinístico remove datas de criação/modificação e o identificador único do arquivo. Não use em documentos que necessitam desses campos de metadados.

Exemplo de Configuração Completa

Abaixo está um trecho único mostrando todas as principais opções de configuração juntas:

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,
);

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

// Fontes
$doc->configureFonts(function (FontConfig $config): void {
    $config->addDirectory('/path/to/fonts');
});

// Criptografia
$doc->setEncryption(new EncryptionConfig(
    level: EncryptionLevel::AES256,
    userPassword: '',
    ownerPassword: 'secret',
    permissions: [Permission::Print],
));

// Acessibilidade
$doc->enableTaggedPdf();
$doc->setLanguage('en');

// Saída determinística (para testes)
// $doc->enableDeterministicMode();

// Metadados
$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');

Distribuído sob a licença LGPL-3.0-or-later.