Output (HasOutput)
Menyimpan ke File
Cara paling sederhana untuk menghasilkan PDF adalah menulisnya langsung ke disk:
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) menulis PDF yang di-render ke path file yang diberikan dan mengembalikan static.
Output dengan Kontrol Destinasi
Untuk kontrol lebih atas pengiriman, gunakan output() dengan enum OutputDestination:
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Hello, World!');
// Tampilkan di browser (inline)
$pdf->output('document.pdf', OutputDestination::Inline);
// Paksa download
$pdf->output('document.pdf', OutputDestination::Download);
// Simpan ke file
$pdf->output('document.pdf', OutputDestination::File);
// Kembalikan sebagai string
$pdf->output('document.pdf', OutputDestination::String);Enum OutputDestination
| Nilai | Perilaku | Header HTTP |
|---|---|---|
Inline | Tampilkan di browser | Content-Type: application/pdf, Content-Disposition: inline |
Download | Paksa dialog download | Content-Type: application/pdf, Content-Disposition: attachment |
File | Simpan ke filesystem server | Tidak ada |
String | Kembalikan byte PDF mentah | Tidak ada |
Saat menggunakan Inline atau Download, TCPDF-Next secara otomatis mengirim header Content-Type dan Content-Disposition yang sesuai sebelum mengirim konten PDF.
Mendapatkan PDF sebagai String
Gunakan toString() untuk mendapatkan byte PDF mentah tanpa menulis ke disk atau mengirim header. Ini berguna untuk lampiran email, API penyimpanan, atau pemrosesan lebih lanjut:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Monthly Report');
$content = $pdf->toString();
// Tulis ke disk secara manual
file_put_contents('/path/to/output.pdf', $content);
// Atau gunakan untuk lampiran email
Mail::send([], [], function ($message) use ($content) {
$message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});Streaming Output untuk PDF Besar
Untuk dokumen dengan ribuan halaman, menyimpan seluruh PDF di memori bisa mahal. PdfWriterChunked menulis konten PDF secara inkremental ke stream:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
$pdf->addPage()->setFont('Helvetica', '', 10);
for ($i = 0; $i < 5000; $i++) {
$pdf->cell(0, 5, "Baris {$i}: konten data di sini", newLine: true);
}
// Streaming terjadi secara internal — save memicu penulisan chunked
$pdf->save('large-report.pdf');Writer chunked men-flush data halaman saat difinalisasi, menghindari kebutuhan buffer seluruh dokumen sebelum menulis. Ini transparan bagi pemanggil — API save() dan output() yang sama berlaku.
Linearization (Tampilan Web Cepat)
Linearization mengatur ulang objek PDF sehingga halaman pertama bisa di-render sebelum seluruh file didownload. Ini penting untuk PDF yang dikirim melalui web:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setLinearization(true)
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Dioptimasi untuk tampilan web')
->save('linearized.pdf');Linearizer menulis hint stream yang memberi tahu PDF viewer cara me-render dokumen secara progresif. Aktifkan ini saat PDF akan disajikan melalui HTTP dan dilihat di browser.