Показать файлы PDF в браузере пользователей через PHP / Perl

Я хочу показать своим пользователям файлы PDF. Причина, по которой я использую cgi для показа pdf, – это то, что я хочу отслеживать клики для pdf и скрывать реальное местоположение сохраненного pdf.

Я искал в Интернете и только нашел, как показать диалог сохранения пользователям и создать pdf-файл, а не показывать файлы пользователям.

То, что я хотел, это показать пользователям мои pdf-файлы, а не создавать или загружать PDF-файлы. Вот что я получил из официальной документации php:

<?php header('Content-type: application/pdf'); readfile('the.pdf'); ?> 

Также мой Perl-код google-search-result:

 open(PDF, "the.pdf") or die "could not open PDF [$!]"; binmode PDF; my $output = do { local $/; <PDF> }; close (PDF); print "Content-Type: application/pdf\n"; print "Content-Length: " .length($output) . "\n\n"; print $output 

если вы делаете это на рубине, скажите мне это. Но я не уверен, поддерживает ли мой сервер рельсы.

Извините, если мой код слишком далеко от метода, чтобы показать pdf, так как я ничего не знаю о обработке PDF и о том, как реализовать эту проблему.

Предположим, что у пользователей есть подключаемый модуль Adobe Reader. Итак, как исправить мою проблему?

edit : Я хочу показать простой файл PDF. Моя основная цель: отслеживать мои pdf-файлы и использовать некоторые модные URL-адреса.

edit : Вот мой основной php-код:

 <?php $file='/files/the.pdf'; header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="the.pdf"'); @readfile($file); ?> 

edit : Теперь код работает. Но индикатор выполнения загрузки (на плагине Adobe Reader X) не появляется. Зачем? Кто-нибудь может мне помочь? Вот мой основной код:

 <?php $file='./files/the.pdf'; header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="the.pdf"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file)); @readfile($file); ?> 

edit : Все мои проблемы решены. Вот окончательный код:

 <?php $file = './path/to/the.pdf'; $filename = 'Custom file name for the.pdf'; /* Note: Always use .pdf at the end. */ header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="' . $filename . '"'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($file)); header('Accept-Ranges: bytes'); @readfile($file); ?> 

Благодаря! 🙂

Я предполагаю, что вы хотите, чтобы PDF отображался в браузере, а не форсировал загрузку. Если это так, попробуйте настроить заголовок Content-Disposition со значением inline .

Также помните, что это также будет зависеть от настроек браузера – некоторые браузеры могут быть настроены так, чтобы всегда загружать PDF-файлы или открывать их в другом приложении (например, Adobe Reader)

  $url ="https://yourFile.pdf"; $content = file_get_contents($url); header('Content-Type: application/pdf'); header('Content-Length: ' . strlen($content)); header('Content-Disposition: inline; filename="YourFileName.pdf"'); header('Cache-Control: private, max-age=0, must-revalidate'); header('Pragma: public'); ini_set('zlib.output_compression','0'); die($content); 

Протестировано и отлично работает. Если вы хотите, чтобы файл загружался, замените

  Content-Disposition: inline 

с

  Content-Disposition: attachment 

Вы можете изменить рендеринг PDF, такой как xpdf, или показать, чтобы отобразить графическое изображение на вашем сервере, а затем доставить изображение пользователю. Это то, как Google быстро просматривает PDF-файлы, они визуализируют его локально, а затем доставляют изображения пользователю. Нет загруженного PDF-файла, и источник довольно хорошо скрыт. 🙂

Самый безопасный способ отображения PDF-файла вместо загрузки, кажется, встраивает его с помощью object или элемента iframe . Существуют также сторонние решения, такие как Google Viewer Google.

См. Лучший способ вставки PDF в HTML для обзора.

Также есть DoPDF , Java-браузер In-browser PDF. Я не могу говорить о его качестве, но он выглядит интересным.

Вы также можете использовать класс fpdf, доступный по адресу: http://www.fpdf.org . Он предоставляет опции для вывода в файл и отображения в браузере.