Skip to content

出力(HasOutput)

ファイルへの保存

PDFを生成する最も簡単な方法は、ディスクに直接書き込むことです:

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) は、レンダリングされたPDFを指定されたファイルパスに書き込み、static を返します。

出力先の制御

配信をより細かく制御するには、OutputDestination 列挙型を使用して output() を呼び出します:

php
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/pdfContent-Disposition: inline
Downloadダウンロードダイアログを強制Content-Type: application/pdfContent-Disposition: attachment
Fileサーバーファイルシステムに保存なし
String生のPDFバイトを返すなし

Inline または Download を使用する場合、TCPDF-Nextは適切な Content-TypeContent-Disposition ヘッダーをPDFコンテンツのフラッシュ前に自動的に送信します。

PDFを文字列として取得

toString() を使用すると、ディスクに書き込んだりヘッダーを送信したりせずに、生のPDFバイトを取得できます。これはメール添付、ストレージAPI、またはさらなる処理に便利です:

php
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コンテンツをストリームに段階的に書き込みます:

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

// ストリーミングは内部的に行われる — saveがチャンク書き込みをトリガー
$pdf->save('large-report.pdf');

チャンクライターはページデータが確定するとフラッシュし、書き込み前にドキュメント全体をバッファリングする必要がありません。これは呼び出し元にとって透過的です。同じ save()output() APIが適用されます。

リニアライゼーション(Fast Web View)

リニアライゼーションはPDFオブジェクトを並べ替え、ファイル全体がダウンロードされる前に最初のページをレンダリングできるようにします。これはWeb経由で配信されるPDFに不可欠です:

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

Linearizer は、PDFビューアにドキュメントをプログレッシブにレンダリングする方法を伝えるヒントストリームを書き込みます。PDFがHTTP経由で配信されブラウザで閲覧される場合は、これを有効にしてください。

LGPL-3.0-or-later ライセンスの下で公開されています。