Skip to content

Configuración

TCPDF-Next viene con valores predeterminados sensatos que funcionan desde el primer momento. Cada ajuste puede ser sobrescrito al momento de crear el documento o después mediante setters fluidos.

Valores predeterminados del documento

Cuando llamas a Document::create(), se aplican los siguientes valores predeterminados a menos que especifiques otros:

AjustePredeterminadoDescripción
Tamaño de páginaPageSize::A4ISO A4 (210 × 297 mm)
OrientaciónOrientation::PortraitModo vertical
UnidadUnit::MillimeterTodas las medidas en milímetros
Margen izquierdo15 mmMargen izquierdo de la página
Margen superior27 mmMargen superior de la página
Margen derecho15 mmMargen derecho de la página
Margen inferior25 mmMargen inferior de la página
Salto de página automáticotrueSalto de página automático cerca del margen inferior
FuenteHelvetica, 12 ptFamilia y tamaño de fuente predeterminados
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,
);

Márgenes

Los márgenes pueden establecerse de forma global o por página:

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

// Márgenes globales
$doc->setMargins(new Margin(
    left: 20,
    top: 30,
    right: 20,
    bottom: 25,
));

// Sobrescribir para una página específica
$doc->addPage(
    margin: new Margin(left: 10, top: 10, right: 10, bottom: 10),
);

Rutas y directorios de fuentes

TCPDF-Next busca archivos de fuentes en un conjunto configurable de directorios. Las fuentes integradas (Helvetica, Courier, Times, Symbol, ZapfDingbats) siempre están disponibles. Para fuentes personalizadas o Unicode, registra rutas adicionales:

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

$doc->configureFonts(function (FontConfig $config): void {
    // Agregar un directorio que contenga archivos .ttf / .otf
    $config->addDirectory('/path/to/my/fonts');

    // Agregar un solo archivo de fuente con un alias de familia
    $config->addFont('/path/to/MyFont-Regular.ttf', alias: 'MyFont');
});

TIP

Los archivos de fuentes se incrustan como subconjuntos por defecto, manteniendo la salida PDF compacta. La incrustación completa puede habilitarse por fuente cuando sea necesario.

Ajustes de cifrado

El cifrado PDF se configura a través del 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,
    ],
));
NivelDescripción
EncryptionLevel::RC4_40RC4 de 40 bits heredado (no recomendado)
EncryptionLevel::RC4_128RC4 de 128 bits
EncryptionLevel::AES128AES de 128 bits
EncryptionLevel::AES256AES de 256 bits (recomendado)

Ajustes de PDF etiquetado

Los PDFs etiquetados (accesibles) mejoran el soporte de lectores de pantalla y son requeridos por PDF/UA. Habilita el etiquetado globalmente:

php
$doc->enableTaggedPdf();

// Opcionalmente establece el idioma del documento para accesibilidad
$doc->setLanguage('en');

Cuando el modo de PDF etiquetado está activo, las etiquetas estructurales (<P>, <H1><H6>, <Table>, etc.) se emiten automáticamente por las APIs de texto y tablas.

Modo determinístico

Por defecto, los PDFs contienen marcas de tiempo e identificadores únicos que hacen que cada salida sea única. El modo determinístico los elimina, produciendo una salida idéntica byte a byte para la misma entrada — útil para pruebas de snapshot y compilaciones reproducibles:

php
$doc->enableDeterministicMode();

WARNING

El modo determinístico elimina las fechas de creación/modificación y el identificador único del archivo. No lo uses para documentos que requieran estos campos de metadatos.

Ejemplo de configuración completa

A continuación se muestra un fragmento que incluye todas las opciones principales de configuración 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,
);

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

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

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

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

// Salida determinística (para pruebas)
// $doc->enableDeterministicMode();

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

Distribuido bajo la licencia LGPL-3.0-or-later.