Skip to content

Output (HasOutput)

Salvataggio su File

Il modo più semplice per produrre un PDF è scriverlo direttamente su disco:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Hello, World!')
    ->save('/path/to/output.pdf');

save(string $path) scrive il PDF renderizzato al percorso file dato e restituisce static.

Output con Controllo Destinazione

Per più controllo sulla consegna, usa output() con l'enum OutputDestination:

php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Hello, World!');

// Visualizza in browser (inline)
$pdf->output('document.pdf', OutputDestination::Inline);

// Forza download
$pdf->output('document.pdf', OutputDestination::Download);

// Salva su file
$pdf->output('document.pdf', OutputDestination::File);

// Restituisci come stringa
$pdf->output('document.pdf', OutputDestination::String);

Enum OutputDestination

ValoreComportamentoHeader HTTP
InlineVisualizza in browserContent-Type: application/pdf, Content-Disposition: inline
DownloadForza dialogo downloadContent-Type: application/pdf, Content-Disposition: attachment
FileSalva su filesystem serverNessuno
StringRestituisci byte PDF grezziNessuno

Quando usa Inline o Download, TCPDF-Next invia automaticamente gli header Content-Type e Content-Disposition appropriati prima di flushare il contenuto PDF.

Ottenere PDF come Stringa

Usa toString() per ottenere i byte PDF grezzi senza scrivere su disco o inviare header. Questo è utile per allegati email, API storage o ulteriore elaborazione:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Monthly Report');

$content = $pdf->toString();

// Scrivi su disco manualmente
file_put_contents('/path/to/output.pdf', $content);

// O usa per allegati email
Mail::send([], [], function ($message) use ($content) {
    $message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});

Output Streaming per PDF Grandi

Per documenti con migliaia di pagine, tenere l'intero PDF in memoria può essere costoso. PdfWriterChunked scrive contenuto PDF incrementalmente su uno stream:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create();
$pdf->addPage()->setFont('Helvetica', '', 10);

for ($i = 0; $i < 5000; $i++) {
    $pdf->cell(0, 5, "Row {$i}: data content here", newLine: true);
}

// Lo streaming avviene internamente — save attiva scrittura chunked
$pdf->save('large-report.pdf');

Lo scrittore chunked flusha dati pagina mentre sono finalizzati, evitando la necessità di bufferizzare l'intero documento prima di scrivere. Questo è trasparente al chiamante — la stessa API save() e output() si applica.

Linearizzazione (Fast Web View)

La linearizzazione riordina oggetti PDF così la prima pagina può essere renderizzata prima che l'intero file sia scaricato. Questo è essenziale per PDF consegnati web:

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setLinearization(true)
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Optimized for web viewing')
    ->save('linearized.pdf');

Il Linearizer scrive stream hint che dicono ai visualizzatori PDF come renderizzare progressivamente il documento. Abilita questo quando i PDF saranno serviti su HTTP e visualizzati in-browser.

Rilasciato sotto licenza LGPL-3.0-or-later.