iframe PDF intégré au HTML

J'ai utilisé la balise <iframe> pour intégrer un fichier pdf.

<iframe id="iframepdf" src="files/example.pdf"></iframe>

Cela fonctionne bien dans Chrome, IE8+, Firefox, etc., mais pour une raison quelconque, lorsque certaines personnes l'affichent dans IE8, les fichiers sont téléchargés au lieu d'être intégrés. Je sais que ce navigateur est obsolète mais c'est le navigateur standard de mon bureau et, en tant que tel, le site Web doit être conçu pour cela.

Quelqu'un a-t-il une idée de la raison pour laquelle cela se produit, de la manière dont je peux y remédier ou de l'affichage d'un message d'erreur au lieu de laisser les fichiers se télécharger ?

Il est téléchargé probablement parce que le plug-in Adobe Reader n'est pas installé. Dans ce cas, IE (peu importe la version) ne sait pas comment le rendre et il télécharge simplement le fichier (Chrome, par exemple, a son propre moteur de rendu PDF intégré).

Cela dit. L'" iframe " n'est pas la meilleure façon d'afficher un PDF (n'oubliez pas la compatibilité avec les navigateurs mobiles, par exemple Safari). Certains navigateurs ouvriront toujours ce fichier dans une application externe (ou dans une autre fenêtre du navigateur). Le meilleur moyen et le plus compatible que j'ai trouvé est un peu délicat mais fonctionne sur tous les navigateurs que j'ai essayés (même les plus anciens) :

Gardez votre ` mais n&#8217affichez pas un PDF à l&#8217intérieur, il sera rempli d&#8217une page HTML qui consiste en une balise ``. Créez une page HTML d'habillage pour votre PDF, elle devrait ressembler à ceci :







Bien sûr, vous devez encore installer le plug-in approprié dans le navigateur. Consultez également [cet article][1] si vous devez prendre en charge Safari sur les appareils mobiles.

1er. Pourquoi imbriquer dans ? Vous trouverez la réponse [ici sur SO][2]. Au lieu de la balise imbriquée , vous pouvez (devriez !) fournir un message personnalisé à vos utilisateurs (ou un visualisateur intégré, voir le paragraphe suivant). Aujourd'hui, peut être utilisé sans soucis et `` est inutile.

2ème. Pourquoi une page HTML ? Pour que vous puissiez fournir une solution de repli si la visionneuse PDF n&#8217est pas prise en charge. Visionneuse interne, messages d'erreur/options en HTML simple, etc...

Il est difficile de vérifier la prise en charge du PDF, vous pouvez donc fournir une autre visionneuse à vos clients. Jetez un coup d'œil au projet [PDF.JS][3], il est plutôt bon mais la qualité de rendu - pour les navigateurs de bureau - n'est pas aussi bonne qu'une visionneuse PDF native (je n'ai pas vu de différence dans les navigateurs mobiles à cause de la taille de l'écran, je suppose).

[1] : https://stackoverflow.com/questions/8237708/making-embedded-pdf-scrollable-in-ipad [2] : https://stackoverflow.com/questions/1244788/embed-vs-object [3] : https://github.com/mozilla/pdf.js/

Commentaires (11)

Si le navigateur a un plugin pdf installé, il exécute l'objet, sinon il utilise le PDF Viewer de Google pour l'afficher en HTML simple :



Commentaires (6)

Iframe

Objet



Commentaires (2)