Используя header(), чтобы переписать имя файла в URL для динамического pdf
У меня есть php script, который создает отчет в формате 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"');
(не в то же время), и ни одна из них не работает для меня. Это проблема с моим веб-хостом? Для этого 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();
?>
Ответы
Ответ 1
Try:
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 script, просто измените код, который создает ссылку на pdf.
Ответ 2
Должно быть:
header('Content-disposition: attachment;filename="July Report.pdf"');
Ответ 3
На основе https://github.com/rospdf/pdf-php/raw/master/readme.pdf (Страница 19)
Поток-метод принимает массив как параметр:
stream([array options])
Используется для вывода, это задает необходимые заголовки и выводит pdf-код. Массив опций может использоваться для задания количества элементов вывода:
'Content-Disposition'=>'filename'
задает имя файла,...
Этот код хорошо работает для меня
$ezOutput = $pdf->ezStream(array("Content-Disposition"=>"YourFileName.pdf"));
В моем случае я использую ezStream()
, но я думаю, что stream()
должен дать тот же результат.
Ответ 4
Для имени, отображаемого на вкладке заголовка в браузере
У меня была та же проблема, и я обнаружил, что ее метаданные отсутствуют внутри моего .pdf.
Я использовал инструменты (инструменты debenu PDF) для редактирования свойства pdf, такого как автор, название и т.д.
Я просто меняю заголовок из пустого поля на то, что я хочу, загружаю новый pdf и теперь, с тем же кодом, тот же script браузер показывает правильное имя!
Для имени, когда вы запрашиваете сохранение документа
- это то, что вы указываете в заголовке filename =
Ответ 5
Вы пытались удалить пробелы из имени файла с помощью дефиса? Итак, я думаю, что его имя должно быть таким; имя файла = июль-Report.pdf