【Laravel-DomPDF】独自のheaderを追加する

小ネタです。

Laravel-DomPDFで、独自のheaderを追加したい場合の対処法です。

通常のダウンロード処理

公式ドキュメントは下記です。

github.com

従来の方法

例えば、ファイルをブラウザで表示せずダウンロードする場合、下記のheader を指定します。

Content-Disposition: attachment;

laravel-DomPDFの場合

headerを書かなくてもdownload()関数で出力すれば同じ事をしてくれます。

<?php
// 既にプロバイダーで「PDF」と「Laravel-DomPDF」を連携している状態とします。  
$pdf = \PDF::loadView('view');
return $pdf->download('sample.pdf');

しかし、関数で定義するherader 以外の要素は追加できません。

独自のヘッダーを適用したい場合

独自のヘッダーを定義する場合、 Laravel-DomPDF独自のdownload() もしくは、ブラウザで表示するためのstoream()のような独自の出力関数は使用しません。

Laravel-DomPDFのoutput()でデータのみ出力して、header()関数をで独自の要素を定義します。
この方法でdownload()関数の機能を再現しつつ、新しいheaderを追加できます。

例) Internet Explorerのファイル名文字化け対策

<?php
// 独自でヘッダーを定義
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode('日本語.pdf'));

$pdf = \PDF::loadView('view');
return $pdf->output();

参考

negiblog.hatenablog.com

©︎2017-2018 WebSandBag