Salida (HasOutput)
Guardar en archivo
La forma más simple de producir un PDF es escribirlo directamente a 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) escribe el PDF renderizado en la ruta de archivo dada y retorna static.
Salida con control de destino
Para más control sobre la entrega, usa output() con el enum OutputDestination:
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Hello, World!');
// Mostrar en navegador (en línea)
$pdf->output('document.pdf', OutputDestination::Inline);
// Forzar descarga
$pdf->output('document.pdf', OutputDestination::Download);
// Guardar en archivo
$pdf->output('document.pdf', OutputDestination::File);
// Retornar como cadena
$pdf->output('document.pdf', OutputDestination::String);Enum OutputDestination
| Valor | Comportamiento | Cabeceras HTTP |
|---|---|---|
Inline | Mostrar en navegador | Content-Type: application/pdf, Content-Disposition: inline |
Download | Forzar diálogo de descarga | Content-Type: application/pdf, Content-Disposition: attachment |
File | Guardar en sistema de archivos del servidor | Ninguna |
String | Retornar bytes PDF sin procesar | Ninguna |
Cuando se usa Inline o Download, TCPDF-Next envía automáticamente las cabeceras Content-Type y Content-Disposition apropiadas antes de enviar el contenido PDF.
Obtener PDF como cadena
Usa toString() para obtener los bytes PDF sin procesar sin escribir a disco ni enviar cabeceras. Esto es útil para adjuntos de correo electrónico, APIs de almacenamiento o procesamiento adicional:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Monthly Report');
$content = $pdf->toString();
// Escribir a disco manualmente
file_put_contents('/path/to/output.pdf', $content);
// O usar para adjuntos de correo electrónico
Mail::send([], [], function ($message) use ($content) {
$message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});Salida en streaming para PDFs grandes
Para documentos con miles de páginas, mantener el PDF completo en memoria puede ser costoso. PdfWriterChunked escribe el contenido PDF de forma incremental a un 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);
}
// El streaming ocurre internamente — save activa la escritura por bloques
$pdf->save('large-report.pdf');El escritor por bloques libera los datos de página a medida que se finalizan, evitando la necesidad de almacenar todo el documento antes de escribir. Esto es transparente para el llamador — la misma API de save() y output() se aplica.
Linearización (Vista web rápida)
La linearización reordena los objetos PDF para que la primera página pueda renderizarse antes de que se descargue el archivo completo. Esto es esencial para PDFs entregados por 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');El Linearizer escribe streams de sugerencias que indican a los visores PDF cómo renderizar el documento de forma progresiva. Habilita esto cuando los PDFs se servirán por HTTP y se verán en el navegador.