Skip to content

Saída (HasOutput)

Salvando em Arquivo

A maneira mais simples de produzir um PDF é escrevê-lo diretamente no 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) 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:

php
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

ValorComportamentoHeaders HTTP
InlineExibir no navegadorContent-Type: application/pdf, Content-Disposition: inline
DownloadForçar diálogo de downloadContent-Type: application/pdf, Content-Disposition: attachment
FileSalvar no filesystem do servidorNenhum
StringRetornar bytes PDF brutosNenhum

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:

php
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:

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);
}

// 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:

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');

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.

Distribuído sob a licença LGPL-3.0-or-later.