我有一个生成pdf报告的php脚本。当我们去保存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"');
(不是在同一时间),对我来说都不起作用。这是我的网络托管服务商的问题吗?对于这个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();
?>
答案 0 :(得分:48)
尝试:
header('Content-Disposition: attachment; filename="July Report.pdf"');
或
header('Content-Disposition: inline; filename="July Report.pdf"');
另一种选择是使用$_SERVER['PATH_INFO']
传递“July Report.pdf” - 示例链接可能是:
<a href="report_pdf.php/July%20Report.pdf?month=07">
该文件应默认保存为“July Report.pdf” - 并且应该与旧的PHP脚本完全相同,只需更改生成pdf链接的代码即可。
答案 1 :(得分:5)
应该是:
header('Content-disposition: attachment;filename="July Report.pdf"');
答案 2 :(得分:3)
基于https://github.com/rospdf/pdf-php/raw/master/readme.pdf(第19页) stream-method接受一个数组作为参数:
stream([array options])
用于输出,这将设置所需的标头并输出pdf代码。 options数组可用于设置有关输出的许多内容:
'Content-Disposition'=>'filename'
设置文件名,...
此代码适用于我
$ezOutput = $pdf->ezStream(array("Content-Disposition"=>"YourFileName.pdf"));
在我的情况下,我使用ezStream()
,但我认为stream()
应该给出相同的结果。
答案 3 :(得分:1)
对于浏览器标题选项卡上显示的名称
我遇到了同样的问题,然后我发现我的.pdf中缺少元数据。 我使用工具(“debenu PDF工具”)编辑pdf属性,如作者,标题等... 我只是将标题从空白字段更改为我想要的标题,上传新的pdf,现在,使用相同的代码,相同的脚本,浏览器显示正确的名称!
当您要求保存文件时的名称
是你在header filename =
中指定的内容答案 4 :(得分:0)
您是否尝试使用连字符从文件名中删除空格?所以,我认为它的名字必须是这样的;文件名=七月Report.pdf