[PHP-users 29145] Re: PDF ・ MS Office ファイルなどをダウンロードする方法

鈴木孝征 takamasa @ thaliana.myhome.cx
2006年 5月 8日 (月) 17:36:04 JST


小山様へ。鈴木孝征と申します。

私はPEAR::HTTP_Download.phpのほうはわかりませんので、header関数を使った
方法についてコメントします。

私はいつも下記のようにしてPDFのダウンロードを行っています。

$pdffile = 'dokokano/pdf/file.pdf';
header("Content-length: " . filesize($pdffile));
header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=tekitou");
readfile($pdffile);

よくはまるところは
1. プログラムの作成中にエラーメッセージをHTMLで表示しており、うまくうご
いたときにはブラウザのキャッシュのせい(このへんはきちんと調べていません)
でPDFをHTMLと解釈されて、%PDF...ではじまるものが表示されることがありま
す。一度ブラウザーを閉じたり、リンクを再度クリックしたり(F5で更新ではな
い)をしたりすると症状が改善されることがあります。

2. PDFが以外に大きかったりするとメモリが足りなくなったりします。私はVine
Linuxを使っていますが、php.iniの設定で出力のバッファリングが有効になって
いるので、PHPの使用可能なメモリの1/3ぐらいの大きさのPDFのダウンロードに
失敗したりします。PDFファイルの送信前に、ob_end_flush()とやるのが私の定
法です。

お役にたてば幸いです。


PHP-users メーリングリストの案内