He utilizado la etiqueta <iframe> para incrustar un archivo pdf.
<iframe id="iframepdf" src="files/example.pdf"></iframe>
Esto funciona bien en Chrome, IE8+, Firefox, etc., pero por alguna razón, cuando algunas personas lo ven en IE8, los archivos se descargan en lugar de incrustarse. Sé que este navegador es obsoleto, pero es el navegador estándar dentro de mi oficina y como tal, el sitio web tiene que ser diseñado para esto.
¿Alguien tiene alguna idea de por qué ocurre esto, cómo puedo solucionarlo o bien poner un mensaje de error en lugar de dejar que se descarguen los archivos?
Se descarga probablemente porque no hay instalado el plug-in de Adobe Reader. En este caso, IE (no importa la versión) no sabe cómo renderizarlo y simplemente descargará el archivo (Chrome, por ejemplo, tiene su propio renderizador de PDFs integrado).
Dicho esto. <iframe>
no es la mejor manera de mostrar un PDF (no hay que olvidar la compatibilidad con los navegadores móviles, por ejemplo Safari). Algunos navegadores siempre abrirán ese archivo dentro de una aplicación externa (o en otra ventana del navegador). La mejor manera y la más compatible que he encontrado es un poco complicada pero funciona en todos los navegadores que he probado (incluso bastante anticuados):
Mantenga su <iframe>pero no muestre un PDF dentro de él, se llenará con una página HTML que consiste en una etiqueta
<html>
<body>
<object data="your_url_to_pdf" type="application/pdf">
<embed src="your_url_to_pdf" type="application/pdf" />
</object>
</body>
</html>
Por supuesto, usted todavía necesita el plug-in apropiado instalado en el navegador. También eche un vistazo a este post si necesita soporte para Safari en dispositivos móviles.
<embed>dentro de
2º. ¿Por qué una página HTML? Para poder ofrecer un recurso si el visor de PDF no es compatible. Visor interno, mensajes/opciones de error en HTML plano, etc...
Es difícil comprobar la compatibilidad con PDF, por lo que puede ofrecer un visor alternativo a sus clientes; eche un vistazo al proyecto PDF.JS, es bastante bueno, pero la calidad de la representación, para los navegadores de escritorio, no es tan buena como la de un visor de PDF nativo (supongo que no he visto ninguna diferencia en los navegadores móviles debido al tamaño de la pantalla).
Si el navegador tiene un plugin de pdf instalado ejecuta el objeto, si no utiliza el visor de PDF de Google para mostrarlo como HTML plano:
<object data="your_url_to_pdf" type="application/pdf">
<iframe src="https://docs.google.com/viewer?url=your_url_to_pdf&embedded=true"></iframe>
</object>
Formación
<iframe id="fred" style="border:1px solid #666CCC" title="PDF in an i-Frame" src="PDFData.pdf" frameborder="1" scrolling="auto" height="1100" width="850" ></iframe>
Objeto
<object data="your_url_to_pdf" type="application/pdf">
<embed src="your_url_to_pdf" type="application/pdf" />
</object>