Skip to content

Ciclo di Vita Documento

La classe Document è la facade centrale di TCPDF-Next. È final, implementa PdfDocumentInterface e fornisce tutte le funzionalità attraverso 12 trait componibili.

Creazione Documento

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create();

Il costruttore è privato — usa sempre il factory statico create(). Questo inizializza:

  • Dimensione pagina predefinita: A4 (210 × 297 mm)
  • Margini predefiniti: 10mm simmetrici
  • Dimensione font predefinita: 12pt
  • Colori predefiniti: testo nero, riempimento bianco, tratto nero
  • Larghezza linea predefinita: 0.2mm (0.57pt)

Metadata (HasMetadata)

php
$pdf = Document::create()
    ->setTitle('Invoice #001')
    ->setAuthor('Yeeefang')
    ->setSubject('Monthly Invoice')
    ->setKeywords('invoice, payment, 2026')
    ->setCreator('TCPDF-Next')
    ->setLanguage('en');

Tutti i metodi metadata restituiscono static per concatenazione. I metadata vengono scritti come XMP (PDF 2.0) e voci dizionario Info.

Preferenze Visualizzatore

Controlla come i visualizzatori PDF mostrano il documento:

php
$pdf->setDisplayMode('fullpage', 'SinglePage')
    ->setViewerPreferences([
        'HideToolbar' => true,
        'HideMenubar' => true,
        'FitWindow' => true,
    ]);

Costanti Documento

CostanteValoreDescrizione
MAX_PAGES10,000Pagine massime per documento

Architettura Interna

Il Document mantiene riferimenti a sotto-motori, la maggior parte inizializzati lazy:

Document
├── DocumentData          # Metadata, font, immagini, pagine
├── PdfWriter             # Serializzazione PDF
├── FontManager           # Caricamento e subsetting font
├── FontMetrics           # Calcolo larghezza stringa
├── DrawingEngine         # Rendering forme/gradienti
├── TransformEngine       # Trasformazioni CTM
├── TextRenderer          # Gestione stato testo
├── HeaderFooter          # Rendering intestazione/piè di pagina
├── ColumnLayout          # Layout multi-colonna
├── BookmarkManager       # Segnalibri PDF
├── LinkManager           # Link interni/esterni
├── TocBuilder            # Indice
├── AnnotationManager     # Annotazioni testo
├── PageManager           # Manipolazione pagina
├── FormFieldManager?     # Campi AcroForm (lazy)
├── LayerManager?         # Layer OCG (lazy)
├── TemplateManager?      # Template pagina (lazy)
├── TransactionManager?   # Savepoint/rollback (lazy)
├── BookletLayout?        # Imposizione booklet (lazy)
├── FileAttachment?       # File incorporati (lazy)
├── JavaScriptManager?    # JavaScript documento (lazy)
├── SvgParser?            # Rendering SVG (lazy)
├── EpsParser?            # Rendering EPS (lazy)
├── StructureTree?        # PDF taggato (lazy)
├── SpotColorManager?     # Colori spot (lazy)
├── ImageLoader?          # Caricamento immagini (lazy)
├── BiDiResolver?         # Testo bidirezionale (lazy)
├── Aes256Encryptor?      # Crittografia AES (lazy)
├── PadesOrchestrator?    # Firme digitali (lazy)
└── ChromeRenderer?       # Chrome CDP (lazy, Artisan)

Accesso Sotto-Motori

Per casi d'uso avanzati, puoi accedere ai motori interni:

php
$fontManager = $pdf->getFontManager();
$writer = $pdf->getWriter();
$drawingEngine = $pdf->getDrawingEngine();
$bookmarkManager = $pdf->getBookmarkManager();

Esempio Completo

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\ValueObjects\PageSize;
use Yeeefang\TcpdfNext\ValueObjects\Margin;
use Yeeefang\TcpdfNext\Contracts\Orientation;

$pdf = Document::create()
    // Metadata
    ->setTitle('Company Report')
    ->setAuthor('Finance Team')
    ->setLanguage('en')

    // Prima pagina — A4 verticale
    ->addPage()
    ->setFont('Helvetica', 'B', 24)
    ->cell(0, 20, 'Annual Report 2026')
    ->ln()

    // Seconda pagina — orizzontale
    ->addPage(PageSize::A4(), Orientation::Landscape)
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Financial Summary')

    // Salva
    ->save('report.pdf');

Rilasciato sotto licenza LGPL-3.0-or-later.