EMBED vs. OBJECT

Quelle est la meilleure étiquette à utiliser dans mon fichier HTML lorsque je veux afficher le visualiseur Adobe PDF? En ce moment, j'utilise le code ci-dessous, mais il y a des effets secondaires bizarres (par exemple, il semble voler le focus de départ que j'ai placé dans une autre zone de texte D'entrée; il ne semble pas bien jouer avec la classe jQueryUI Resizeable; etc.)

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

Pourrais-je faire la même chose avec L'étiquette D'objet? Y a-t-il des avantages/inconvénients à utiliser une étiquette par rapport à la les autres?

136
demandé sur James A Mohler 2009-08-07 17:47:21

5 réponses

OBJET vs. EMBED - pourquoi ne pas toujours utiliser embed?

conclusion: L'objet est bon, L'EMBED est vieux. A côté des balises PARAM de IE, tout contenu entre les balises OBJECT sera rendu si le navigateur ne supporte pas le plugin référencé de OBJECT, et apparemment, le contenu sera demandé par http, qu'il soit rendu ou non.

object est la balise standard actuelle à intégrer quelque chose sur une page. embed a été inclus par Netscape (le long de img ) avant que quelque chose comme object étaient sur le w3c esprit.

c'est comme ça que vous incluez un PDF avec object :

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

Si vous vraiment besoin la ligne de PDF de le montrer dans presque tous les navigateurs, comme les anciens navigateurs comprendre embed , mais pas object , vous aurez besoin de faire ceci:

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

cette version ne valide pas .

147
répondu Esteban Küber 2014-11-05 11:40:11

quelques autres options:

<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
répondu aguz 2013-11-08 14:31:49

vous pouvez également utiliser la méthode iframe, bien que cela ne soit pas compatible avec les navigateurs croisés (par ex. ne pas travailler dans Chrome ou android et probablement d'autres - > invite plutôt à télécharger). Cela fonctionne avec les URLS de dataurls et les URLS normales, pas sûr que les autres exemples fonctionnent avec dataURLS (merci de me faire savoir si les autres exemples fonctionnent avec dataURLS?)

 <iframe class="page-icon preview-pane" frameborder="0" height="352" width="396" src="data:application/pdf;base64, ..DATAURLHERE!... "></iframe>
3
répondu ejectamenta 2014-07-24 17:18:32

probablement la meilleure solution de navigateur croisé pour l'affichage pdf sur les pages web est D'utiliser le PDF de Mozilla.JS code de projet, il peut être exécuté comme un noeud.

<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>

un tutoriel sur l'utilisation de pdf.js peut être trouvé à cette ejectamenta article de blog

2
répondu ejectamenta 2015-12-18 10:45:07

Embed n'est pas une étiquette standard, bien que l'objet le soit. Voici un article qui semble vous aider, car il semble que la situation n'est pas si simple. Un exemple pour PDF est inclus.

1
répondu aehlke 2009-08-07 14:01:53