出力(HasOutput)
ファイルへの保存
PDFを生成する最も簡単な方法は、ディスクに直接書き込むことです:
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) は、レンダリングされたPDFを指定されたファイルパスに書き込み、static を返します。
出力先の制御
配信をより細かく制御するには、OutputDestination 列挙型を使用して output() を呼び出します:
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Hello, World!');
// ブラウザに表示(インライン)
$pdf->output('document.pdf', OutputDestination::Inline);
// 強制ダウンロード
$pdf->output('document.pdf', OutputDestination::Download);
// ファイルに保存
$pdf->output('document.pdf', OutputDestination::File);
// 文字列として返す
$pdf->output('document.pdf', OutputDestination::String);OutputDestination列挙型
| 値 | 動作 | HTTPヘッダー |
|---|---|---|
Inline | ブラウザに表示 | Content-Type: application/pdf、Content-Disposition: inline |
Download | ダウンロードダイアログを強制 | Content-Type: application/pdf、Content-Disposition: attachment |
File | サーバーファイルシステムに保存 | なし |
String | 生のPDFバイトを返す | なし |
Inline または Download を使用する場合、TCPDF-Nextは適切な Content-Type と Content-Disposition ヘッダーをPDFコンテンツのフラッシュ前に自動的に送信します。
PDFを文字列として取得
toString() を使用すると、ディスクに書き込んだりヘッダーを送信したりせずに、生のPDFバイトを取得できます。これはメール添付、ストレージAPI、またはさらなる処理に便利です:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Monthly Report');
$content = $pdf->toString();
// 手動でディスクに書き込み
file_put_contents('/path/to/output.pdf', $content);
// またはメール添付として使用
Mail::send([], [], function ($message) use ($content) {
$message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});大規模PDFのストリーミング出力
数千ページのドキュメントでは、PDF全体をメモリに保持するとコストが高くなります。PdfWriterChunked はPDFコンテンツをストリームに段階的に書き込みます:
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);
}
// ストリーミングは内部的に行われる — saveがチャンク書き込みをトリガー
$pdf->save('large-report.pdf');チャンクライターはページデータが確定するとフラッシュし、書き込み前にドキュメント全体をバッファリングする必要がありません。これは呼び出し元にとって透過的です。同じ save() と output() APIが適用されます。
リニアライゼーション(Fast Web View)
リニアライゼーションはPDFオブジェクトを並べ替え、ファイル全体がダウンロードされる前に最初のページをレンダリングできるようにします。これはWeb経由で配信されるPDFに不可欠です:
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setLinearization(true)
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Optimized for web viewing')
->save('linearized.pdf');Linearizer は、PDFビューアにドキュメントをプログレッシブにレンダリングする方法を伝えるヒントストリームを書き込みます。PDFがHTTP経由で配信されブラウザで閲覧される場合は、これを有効にしてください。