Есть ли способ принудительно открыть PDF-файлы в браузере, если опция «Отображать PDF в браузере» не отмечена?
Я попытался использовать тег embed и iframe, но он работает только тогда, когда эта опция отмечена.
Что я могу сделать?
Чтобы указать браузеру, что файл должен просматриваться в браузере, HTTP- ответ должен включать следующие заголовки:
Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"
Чтобы файл был загружен, а не просмотрен:
Content-Type: application/pdf
Content-Disposition: attachment; filename="filename.pdf"
Кавычки вокруг имени файла требуются, если имя файла содержит специальные символы, например, filename[1].pdf
которые могут нарушить способность браузера обрабатывать ответ.
То, как вы установите заголовки HTTP-ответа, будет зависеть от вашего HTTP-сервера (или, если вы генерируете PDF-ответ из серверного кода: ваш язык программирования на стороне сервера).
Если вы используете HTML5 (и я думаю, что в настоящее время все используют это), есть атрибут с именем
download
.Например,
Здесь
filename
необязательно, но если он указан, он будет использовать это имя для загруженного файла.источник
Правильный тип
application/pdf
для PDF, а неapplication/force-download
. Это выглядит как хак для некоторых старых браузеров. Всегда используйте правильный mimetype, если можете.Если у вас есть контроль над кодом сервера:
header("Content-Disposition", "attachment; filename=myfilename.myextension");
header("Content-Disposition", "inline; filename=myfilename.myextension");
Нет контроля над кодом сервера:
ПРИМЕЧАНИЕ. Я предпочитаю указывать имя файла на стороне сервера, поскольку у вас может быть больше информации и вы можете использовать общий код.
источник
Если у вас есть Apache, добавьте это в
.htaccess
файл:источник
К сожалению, в моем предыдущем посте были опечатки.
Если вы не хотите, чтобы браузер запрашивал пользователя, используйте «inline» для третьей строки вместо «attachment». Inline работает очень хорошо. PDF-файл отображается сразу, не прося пользователя нажать кнопку «Открыть». Я использовал «вложение», и это предложит пользователю открыть, сохранить. Я попытался изменить гайку настройки браузера, это не мешает подсказке.
источник
Это для ASP.NET MVC
На вашей странице cshtml:
В вашем контроллере:
источник
Хотя следующее работает хорошо для Firefox, оно не работает на Chrome и мобильных браузерах.
Чтобы исправить ошибку браузеров chrome и mobile, сделайте следующее:
Google PDF Viewer можно использовать так:
источник
Откройте файл downloads.php из корневого файла.
Затем перейдите к строке 186 и измените ее следующим образом:
источник
Вы можете сделать это следующим образом:
Если файл PDF находится внутри какой-либо папки и эта папка не имеет разрешения на прямой доступ к файлам в этой папке, то вы должны обойти некоторые ограничения доступа к файлам, используя
.htaccess
настройки файла следующим образом:Но теперь разрешите только определенные необходимые файлы.
Я использовал этот код, и он работал отлично.
источник
Либо использовать
<embed src="file.pdf" />
если встраивание является опцией или мой новый плагин, PIFF: https://github.com/terrasoftlabs/piff
источник
Вот еще один способ заставить файл для просмотра в браузере на PHP:
источник
header
не работает после того, как вы начали выводить тело запроса (и не возвращает строку для конкатенации в документе HTML)Просто откройте Adobe Reader, меню → Правка → Настройки → Интернет , затем перейдите в режим браузера или для получения подробных инструкций в разных браузерах попробуйте отобразить PDF в браузере | Акробат, Акробат Ридер .
источник
Если вы ссылаетесь на .PDF, он откроется в браузере.
Если флажок снят, он должен ссылаться на ZIP-файл, чтобы вызвать загрузку.
Если .zip не вариант, используйте заголовки в PHP для принудительной загрузки
источник