using header() to rewrite filename in URL for dynamic pdf

泄露秘密 提交于 2019-12-17 10:57:48

问题


I have a php script that generates a pdf report. When we go to save the pdf document, the filename that Acrobat suggests is report_pdf, since the php script is named report_pdf.php. I would like to dynamically name the pdf file, so I don't have to type the appropriate name for the report each time that I save it.

Asking on a news group, someone suggested this, where filename="July Report.pdf" is the intended name of the report

<?
header('Content-Type: application/pdf');
header('Content-disposition: filename="July Report.pdf"');

But it doesn't work. Am I doing it wrong, or will this work at all? Is this a job for mod_rewrite?


So I've tried both
header('Content-disposition: inline; filename="July Report.pdf"');

and

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

( not at the same time ) and neither work for me. Is this a problem with my web host? For this url, here's my code:

<?
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:


Try:

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

or

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

Another option would be to use the $_SERVER['PATH_INFO'] to pass your "July Report.pdf" - an example link might be:

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

That file should default to saving as "July Report.pdf" - and should behave exactly like your old php script did, just change the code that produces the link to the pdf.




回答2:


Should be:

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



回答3:


Based on https://github.com/rospdf/pdf-php/raw/master/readme.pdf (Page 19) The stream-method accepts an array as parameter:

stream([array options]) Used for output, this will set the required headers and output the pdf code. The options array can be used to set a number of things about the output:

'Content-Disposition'=>'filename' sets the filename, ...

This code works well for me

$ezOutput = $pdf->ezStream(array("Content-Disposition"=>"YourFileName.pdf"));

In my case I use ezStream() but I think stream() should give the same result.




回答4:


For the name shown on the title tab in the browser

I had the same problem, then i found that it's metadata missing inside my .pdf. I used a tools ("debenu PDF tools") for edit pdf property like author, title, etc... I just change title from empty field to what title I want, upload the new pdf and now, with same code, same script the browser show the right name!

For the name when u ask to save document

is what u specify in header filename=




回答5:


Did you try to remove spaces from file name using hyphens? So, I think its name must be like this; filename=July-Report.pdf



来源:https://stackoverflow.com/questions/2015985/using-header-to-rewrite-filename-in-url-for-dynamic-pdf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!