PeMaCN Ответов: 1

Как отобразить и скачать PDF-файл, сделанный с помощью PHP?


Привет. У меня есть PDF-файл, созданный с помощью класса tFPDF. Я хотел бы знать, как мне удается показать его в новом окне браузера и сделать его загружаемым на компьютер клиента. Как сказано в названии, PDF-файл сделан на PHP. Чтобы справиться с этой проблемой, нужно ли мне передать PDF-файл или его расположение на сервере в javascript, а затем показать его в новом окне или можно показать его и сделать загружаемым в PHP.

Что я уже пробовал:

До сих пор я пытался использовать json_encode (), чтобы передать местоположение pdf из PHP в javascript, а затем показать его в новом окне. В этом случае код javascript не будет выполняться.

ЯЗЫК JAVASCRIPT:
var pdfFileLocation = <?php echo json_encode($pdfLocation); ?>;
window.open(pdfFileLocation);


РНР:
$pdfLocation = $_SERVER['DOCUMENT_ROOT']."/File.pdf";

1 Ответов

Рейтинг:
12

Sergey Alexandrovich Kryukov

Вот как: создайте HTML-код:

<a href="createdFile.pdf">This is your PDF document</a>

Это звучит как шутка, но я серьезно. Пользователь нажимает на текст этого якоря и использует опцию, предлагаемую браузером.

Дело в том, что PDF не является частью стандартов W3 и совершенно чужд вебу. Пусть вас не смущает тот факт, что многие браузеры на самом деле показывают PDF-файлы напрямую. Несмотря на то, что эта функция популярна, она полностью необязательна и часто реализуется как сторонний плагин. Вы никогда не должны предполагать, что у пользователя есть что-то вообще для просмотра PDF. Это вовсе не проблема, потому что пользователю всегда предоставляется возможность сохранить файл и просмотреть его позже.

Теперь, когда вы динамически генерируете PDF-файл, вы можете избежать сохранения файла в файловой системе хоста вашего сервера. Тогда решение таково: Ваш URL-адрес должен быть каким-то PHP-файлом "createPDF.php", вместо этого "createdFile.pdf". Этот PHP-скрипт может генерировать PDF-контекст непосредственно в выходной поток текущего HTTP-ответа. Перед выводом одного байта необходимо сгенерировать соответствующий заголовок типа содержимого. Строка типа содержимого должна быть "application/pdf".

Типы контента стандартизированы IANA и могут быть найдены здесь: тип носителя[^].

Вот как вы выводите HTTP заголовок через PHP: РНР: заголовок — инструкция[^].

Обратите внимание на заголовки "content-type" и "content-disposition" в примерах кода. Смотреть также: RFC 2183 — передача презентационной информации в Internet Me (RFC2183)[^].

—СА