使用 header() 重写 URL 中的文件名,以获得动态 pdf

2022-08-30 12:52:08

我有一个php脚本,可以生成pdf报告。当我们去保存pdf文档时,Acrobat建议的文件名是report_pdf,因为php脚本被命名为report_pdf.php。我想动态命名pdf文件,这样我就不必在每次保存报告时都为报告键入适当的名称。

在新闻组上询问,有人建议这样做,报告的预期名称在哪里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"');

(不是同时),两者都不适合我。这是我的网络主机的问题吗?对于这个网址,这是我的代码:

<?
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();

?>

答案 1

尝试:

header('Content-Disposition: attachment; filename="July Report.pdf"');

header('Content-Disposition: inline; filename="July Report.pdf"');

另一种选择是使用传递您的“七月报告.pdf” - 示例链接可能是:$_SERVER['PATH_INFO']

<a href="report_pdf.php/July%20Report.pdf?month=07">

该文件应默认保存为“七月报告.pdf” - 并且应该像旧的php脚本一样运行,只需更改生成pdf链接的代码即可。


答案 2

应该是:

header('Content-disposition: attachment;filename="July Report.pdf"'); 

推荐