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