javascript - from - ¿Cómo imprimir PDF desde IFRAME si src=pdf?
print iframe jquery (5)
Puede usar la opción de impresión de ventana directamente. utilizar la opción onclick
onclick = "javascript: window.print ();"
Tengo un iframe que necesita apuntar directamente a un archivo PDF (no a una página con un PDF):
<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>
Quiero poder imprimir el PDF en este iFrame
He encontrado varias soluciones en otras preguntas que no se ajustan a mis necesidades:
- Requerir tener una función en el iframe ( https://stackoverflow.com/a/473270/1246369 )
- Sugiera enfocar el marco y luego realizar una acción de impresión en él ( https://stackoverflow.com/a/9616706/1246369 )
- Acceda a contentWindow del iframe e imprímalo ( https://stackoverflow.com/a/9617566/1246369 )
- Variaciones de aquellos
Sin embargo, parece que FireFox e IE no pueden hacer esto si el src del iframe apunta directamente a un PDF y no a una página alrededor del PDF.
Firefox :
En lugar de imprimir, muestra este cuadro de diálogo: "Impedir que esta página cree diálogos adicionales" con los botones "Aceptar" y "Cancelar", ninguno de los cuales imprime el PDF.
IE :
simplemente ignora mis intentos de imprimir usando los métodos anteriores.
Pregunta :
¿Cómo puedo permitir que los usuarios impriman el PDF en el iFrame sin importar el navegador que estén usando?
Esto parece estar funcionando:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
¿Entonces solo se muestra el pdf?
Como se sugiere en esta respuesta para una pregunta similar , puede hacer esto:
window.frames.pdfFrame.print();
Esto debería solucionar tu problema.
Opción 1:
No he probado esto, pero encontré otra respuesta aquí: https://.com/a/4096547/2528978
Suponiendo que pueda usar lo siguiente:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
¿Entonces solo se muestra el pdf?
Opcion 2:
Haga un hipervínculo al archivo pdf que dice "Imprimirme"
<a href=''Path/To/PDF''>Print Me</a>
Espero que esto ayude...
-Andrés
He luchado un poco para encontrar una solución que funcione tanto para IE como para Chrome. Esto funciona para mí:
$(function() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf(''MSIE '');
var trident = ua.indexOf(''Trident/'');
var edge = ua.indexOf(''Edge/'');
var url = ''/url/to/file.pdf'';
var pdf ='''';
var style = ''position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;'';
if(msie > 0 || trident > 0 || edge > 0){
pdf = ''<object data="'' + url + ''" name="print_frame" id="print_frame" style="'' + style + ''" type="application/pdf">'';
}
else{
pdf =''<iframe src="'' + url + ''" name="print_frame" id="print_frame" style="'' + style + ''"></iframe>'';
}
$(document.body).append(pdf);
setTimeout(function(){
window.frames["print_frame"].focus();
window.frames["print_frame"].print();
},2000);
});
...aclamaciones.