我有一個生成PDF報告的PHP腳本。當我們去保存PDF文檔時,Acrobat建議的文件名是report_pdf,因爲php腳本名爲report_pdf.php。我想動態地命名PDF文件,所以我不必爲每次保存報告時輸入適當的報告名稱。使用header()重寫動態pdf的文件名URL
問一個新聞組,有人建議本,其中filename="July Report.pdf"
是報告
<?
header('Content-Type: application/pdf');
header('Content-disposition: filename="July Report.pdf"');
的預期的名稱,但它不工作。我做錯了,還是會這樣做?這是mod_rewrite的工作嗎?
所以我都試過
header('Content-disposition: inline; filename="July Report.pdf"');
和
header('Content-disposition: attachment; filename="July Report.pdf"');
(不是在同一時間),並沒有爲我工作。這是我的虛擬主機有問題嗎?對於這個url,這裏是我的代碼:
<?
header('Content-disposition: inline; filename="July Report.pdf"');
// requires the R&OS pdf class
require_once('class.ezpdf.php');
require_once('class.pdf.php');
// make a new pdf object
$pdf = new Cpdf();
// select the font
$pdf->selectFont('./fonts/Helvetica');
$pdf->addText(30,400,30,'Hello World');
$pdf->stream();
?>
如果你想要的文件被下載(而不是雙頭呆在瀏覽器中),添加這些: 頭('Content-Transfer-Encoding:二進制'); header('Content-Type:application/force-download'); 否則,你應該仍然包括行 標題('Content-Type:application/pdf') 因此你的瀏覽器知道如何打開文件。 – eCaroth 2010-01-06 22:07:24
另外,您可能會錯過文件的內容長度 - 某些瀏覽器在沒有這個的情況下正確打開文件,有些則不會。爲了得到這個,將所有輸出轉儲到輸出緩衝區,然後打印出標題並指定一個爲'Content-Length:'**輸出緩衝區的strlen *** – eCaroth 2010-01-06 22:11:30
暫時註釋這些php標題行並查看輸出。它不應該包含任何PHP錯誤。修復任何錯誤後應用返回標頭,如果是這樣的話。 – 2018-02-09 16:54:03