Ответ 1
Он загрузился, вероятно, потому, что не установлен плагин Adobe Reader. В этом случае IE (неважно, какая версия) не знает, как его отобразить, и он просто загрузит файл (например, у Chrome есть свой встроенный рендеринг PDF).
Это сказало. <iframe>
не лучший способ отображения PDF (не забывайте о совместимости с мобильными браузерами, например Safari). Некоторые браузеры всегда будут открывать этот файл во внешнем приложении (или в другом окне браузера). Лучший и самый совместимый способ, который я нашел, немного сложнее, но работает на всех браузерах, которые я пробовал (даже довольно устаревший):
Сохраните < iframe>
, но не отобразите PDF внутри него, он будет заполнен HTML-страницей, состоящей из тега <object>
. Создайте страницу HTML-упаковки для своего PDF файла, она должна выглядеть так:
<html>
<body>
<object data="your_url_to_pdf" type="application/pdf">
<embed src="your_url_to_pdf" type="application/pdf" />
</object>
</body>
</html>
Конечно, вам все равно нужен соответствующий плагин, установленный в браузере. Также обратите внимание на этот пост, если вам нужно поддерживать Safari на мобильных устройствах.
первый. Почему вложенность <embed>
внутри <object>
? Здесь вы найдете ответ здесь на SO. Вместо вложенного тега <embed>
вы можете (должны!) Предоставлять пользовательское сообщение для ваших пользователей (или встроенный просмотрщик, см. Следующий параграф). В настоящее время <object>
можно использовать без забот, а <embed>
бесполезно.
второй. Почему HTML-страница? Таким образом, вы можете предоставить резервную копию, если программа просмотра PDF не поддерживается. Внутренний просмотрщик, простые сообщения об ошибках HTML/параметры и т.д.
Трудно проверить поддержку PDF, чтобы вы могли предоставить альтернативное средство просмотра для своих клиентов, посмотрите PDF.JS, это довольно хороший, но качество рендеринга - для настольных браузеров - не так хорош, как родной рендеринг PDF (я не видел разницы в мобильных браузерах из-за размера экрана, я полагаю).