web-dev-qa-db-ja.com

header()を使用して、ダイナミックPDFのURLのファイル名を書き換えます

PDFレポートを生成するphpスクリプトがあります。 pdfドキュメントを保存する場合、phpスクリプトの名前はreport_pdf.phpであるため、Acrobatが推奨するファイル名はreport_pdfです。 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"');

(同時にではありません)どちらも私のために働きません。これは私のWebホストの問題ですか?このために rl 、ここに私のコードがあります:

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

?>
27
user151841

試してください:

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へのリンクを生成するコードを変更するだけです。

50
gnarf

する必要があります:

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

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
Seelixh

ブラウザのタイトルタブに表示される名前の場合

私は同じ問題を抱えていましたが、.pdf内にメタデータが欠落していることがわかりました。著者、タイトルなどのpdfプロパティを編集するためにツール( "debenu PDF tools")を使用しました。タイトルを空のフィールドから希望のタイトルに変更し、新しいPDFをアップロードします。そして今、同じコード、同じスクリプトで、ブラウザは正しい名前を表示します!

ドキュメントを保存するように要求するときの名前について

ヘッダーfilename =で指定するものです

1
JoTaRo

ハイフンを使用してファイル名からスペースを削除しようとしましたか?そのため、その名前は次のようになっていると思います。 filename = July-Report.pdf

0
K-Gun