37

我有一个生成 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();

?>
4

5 回答 5

69

尝试:

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 链接的代码即可。

于 2010-01-06T20:33:03.243 回答
9

应该:

header('Content-disposition: attachment;filename="July Report.pdf"'); 
于 2010-01-06T20:31:33.370 回答
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()应该给出相同的结果。

于 2015-07-03T08:43:55.710 回答
1

对于在浏览器的标题选项卡上显示的名称

我遇到了同样的问题,然后我发现我的 .pdf 中缺少元数据。我使用工具(“debenu PDF 工具”)来编辑 pdf 属性,如作者、标题等...我只是将标题从空字段更改为我想要的标题,上传新的 pdf,现在,使用相同的代码,相同的脚本浏览器显示正确的名称!

当您要求保存文档时的名称

是你在头文件名中指定的=

于 2016-09-06T07:37:24.440 回答
0

您是否尝试使用连字符从文件名中删除空格?所以,我想它的名字一定是这样的;文件名=July-Report.pdf

于 2011-03-12T01:31:19.757 回答