No.404
【PHP】【HTML】PDFファイルをブラウザで開く
今回はダウンロードさせたいんじゃないんだ…
業務システムだと良くあるのが帳票をPDFファイルにして出力する機能。
普通はローカルにダウンロードさせることが多いけど、たまにchromeでクリックしたときのように「WEB画面で見たい」という要求がある。プレビューとか。
そんなときはHTTPヘッダを調整すれば万事OK。
HTTPヘッダの記述
 Content-Disposition の値によって挙動が変わる。
| Content-Dispositionの値 | 挙動 | 
|---|---|
| inline | 画面内部で開く | 
| attachment | ダウンロードさせる | 
画像ファイルをダウンロードさせる仕組みなどはこれを使っているわけだ。
例:PDFファイルをブラウザで開かせる
$filename = '/foo/bar/hoge.pdf';
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="' . basename($filename) . '"');
header('Content-Length: ' . filesize($filename));
 ファイル名やファイルサイズは適当に書き換えてどうぞ。
 日本語ファイル名はrawurlencode()でエンコードしないと化けるので注意。
 ファイルサイズはなくても良いけど、つけて悪いことはないので是非つけよう。
例:PNGファイルをダウンロードさせる
$filename = '/foo/bar/hoge.png';
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Length: ' . filesize($filename));
よくあるアイコンファイルダウンロードなイメージ。