Saída (HasOutput)
Salvando em Arquivo
A maneira mais simples de produzir um PDF é escrevê-lo diretamente no 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) escreve o PDF renderizado no caminho de arquivo fornecido e retorna static.
Saída com Controle de Destino
Para maior controle sobre a entrega, use output() com o enum OutputDestination:
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Hello, World!');
// Exibir no navegador (inline)
$pdf->output('document.pdf', OutputDestination::Inline);
// Forçar download
$pdf->output('document.pdf', OutputDestination::Download);
// Salvar em arquivo
$pdf->output('document.pdf', OutputDestination::File);
// Retornar como string
$pdf->output('document.pdf', OutputDestination::String);Enum OutputDestination
| Valor | Comportamento | Headers HTTP |
|---|---|---|
Inline | Exibir no navegador | Content-Type: application/pdf, Content-Disposition: inline |
Download | Forçar diálogo de download | Content-Type: application/pdf, Content-Disposition: attachment |
File | Salvar no filesystem do servidor | Nenhum |
String | Retornar bytes PDF brutos | Nenhum |
Ao usar Inline ou Download, o TCPDF-Next envia automaticamente os headers Content-Type e Content-Disposition apropriados antes de enviar o conteúdo PDF.
Obtendo PDF como String
Use toString() para obter os bytes PDF brutos sem escrever em disco ou enviar headers. Isso é útil para anexos de e-mail, APIs de armazenamento ou processamento adicional:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Monthly Report');
$content = $pdf->toString();
// Escrever em disco manualmente
file_put_contents('/path/to/output.pdf', $content);
// Ou usar para anexos de e-mail
Mail::send([], [], function ($message) use ($content) {
$message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});Saída Streaming para PDFs Grandes
Para documentos com milhares de páginas, manter todo o PDF na memória pode ser custoso. O PdfWriterChunked escreve conteúdo PDF incrementalmente em um 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);
}
// O streaming acontece internamente — salvar aciona a escrita em chunks
$pdf->save('large-report.pdf');O escritor em chunks descarrega dados de página à medida que são finalizados, evitando a necessidade de armazenar todo o documento em buffer antes de escrever. Isso é transparente para o chamador — a mesma API save() e output() se aplica.
Linearização (Visualização Web Rápida)
A linearização reordena objetos PDF para que a primeira página possa ser renderizada antes que o arquivo inteiro seja baixado. Isso é essencial para PDFs entregues via 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');O Linearizer escreve hint streams que dizem aos visualizadores PDF como renderizar progressivamente o documento. Habilite isso quando PDFs serão servidos via HTTP e visualizados no navegador.