Output (HasOutput)
Salvataggio su File
Il modo più semplice per produrre un PDF è scriverlo direttamente su disco:
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:
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
| Valore | Comportamento | Header HTTP |
|---|---|---|
Inline | Visualizza in browser | Content-Type: application/pdf, Content-Disposition: inline |
Download | Forza dialogo download | Content-Type: application/pdf, Content-Disposition: attachment |
File | Salva su filesystem server | Nessuno |
String | Restituisci byte PDF grezzi | Nessuno |
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:
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:
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:
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.