Подтвердить что ты не робот

Используя 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();

?>
4b9b3361

Ответ 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