PDFファイルをブラウザ表示させる方法

TCPDFで生成したPDFファイルをブラウザ表示させるには、コントローラーからレスポンスの返し方で実現できます。

手順としては、以下のような感じです。

  1. TCPDFでPDFファイルを作成(説明は省略)
  2. Tempに一時的にファイル出力
  3. Laravelのコントローラーから、レスポンスで出力させる

Tempに一時的にファイル出力

tempnam()は、一意のファイル名を生成します。
sys_get_temp_dir()は、一時ファイルを保存するフォルダを返してくれます。

あとは、一時ファイル名を設定して、ファイル作成、出力実行して一時フォルダにファイルを作成しています。

レスポンスで出力させる

response()->file($temp_file, $headers)で、ファイルを指定したヘッダー情報で出力します。
このヘッダー情報が、ブラウザへ出力する為のポイントです。

->deleteFileAfterSend(true);を後ろに追加すると、出力した直後に一時ファイルを削除してくれます。

ファイルをダウンロードさせる場合

response()->download($temp_file, $filename)で、ファイルダウンロードになります。

->deleteFileAfterSend(true);を後ろに追加すると、ダウンロードした直後に一時ファイルを削除してくれるのも、一緒ですね。