print from directly javascript pdf iframe printing

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:

  1. Requerir tener una función en el iframe ( https://stackoverflow.com/a/473270/1246369 )
  2. Sugiera enfocar el marco y luego realizar una acción de impresión en él ( https://stackoverflow.com/a/9616706/1246369 )
  3. Acceda a contentWindow del iframe e imprímalo ( https://stackoverflow.com/a/9617566/1246369 )
  4. 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.