Врезанный против ОБЪЕКТА - PullRequest
147 голосов
/ 07 августа 2009

Какой правильный / лучший тег использовать в моем HTML-файле, когда я хочу отобразить средство просмотра Adobe PDF? Прямо сейчас я использую приведенный ниже код, но есть странные побочные эффекты (например, кажется, что он украл начальный фокус, который я установил для другого текстового поля INPUT; он, кажется, не очень хорошо работает с классом jQueryUI Resizeable ; и т. д.)

<embed src="abc.pdf" type="application/pdf" />

Могу ли я сделать то же самое с тегом OBJECT? Есть ли преимущества / недостатки использования одного тега по сравнению с другим?

Ответы [ 5 ]

155 голосов
/ 07 августа 2009

OBJECT vs. EMBED - почему не всегда использовать embed?

Итог: OBJECT - это Good, EMBED - это Old. Помимо тегов PARAM в IE, любой контент между тегами OBJECT будет отображаться, если браузер не поддерживает указанный плагин OBJECT, и, очевидно, контент получает HTTP-запрос независимо от того, отображается он или нет.

object - это текущий стандартный тег для встраивания чего-либо на страницу. embed был включен Netscape (вдоль img) до того, как что-либо подобное object было в уме w3c .

Вот как вы включаете PDF с object:

<object data="data/test.pdf" type="application/pdf" width="300" height="200">
  alt : <a href="data/test.pdf">test.pdf</a>
</object>

Если вам действительно нужен встроенный PDF для отображения почти в каждом браузере, так как старые браузеры понимают embed, но не object, вам нужно будет сделать это:

<object data="abc.pdf" type="application/pdf">
    <embed src="abc.pdf" type="application/pdf" />
</object>

Эта версия не проверяет .

4 голосов
/ 04 февраля 2010

Некоторые другие опции:

<object type="application/pdf" data="filename.pdf" width="100%" height="100%">
</object>

<object type="application/pdf" data="#request.localhost#_includes/filename.pdf" 
        width="100%" height="100%">
  <param name="src" value="#request.localhost#_includes/filename.pdf">
</object>
3 голосов
/ 24 июля 2014

Вы также можете использовать метод iframe, хотя он не совместим с разными браузерами (например, не работает в chromium или android и, возможно, в других -> вместо этого предлагает загрузить). Он работает с dataURL и обычными URL, не уверен, что другие примеры работают с dataURLS (пожалуйста, дайте мне знать, если другие примеры работают с dataURLS?)

 <iframe class="page-icon preview-pane" frameborder="0" height="352" width="396" src="data:application/pdf;base64, ..DATAURLHERE!... "></iframe>
2 голосов
/ 18 декабря 2015

Вероятно, лучшим кросс-браузерным решением для отображения PDF на веб-страницах является использование кода проекта Mozilla PDF.js, его можно запустить как сервис node.js и использовать следующим образом

<iframe style="width:100%;height:500px" src="http://www.mysite.co.uk/libs/pdfjs/web/viewer.html?file="http://www.mysite.co.uk/mypdf.pdf"></iframe>

Учебное пособие по использованию pdf.js можно найти в этой статье блога ejectamenta

1 голос
/ 07 августа 2009

Embed не является стандартным тегом, хотя object является. Вот статья , которая выглядит так, как будто она вам поможет, поскольку кажется, что ситуация не так проста. Пример для PDF включен.

...