Como imprimir el contenido de un iframe con JQuery
|En una aplicación tipo kiosko en la que estoy trabajando se me ha venido útil generar información en un pdf, incrustarlo en un iframe y luego imprimir el contenido del iframe en lugar de imprimir toda la página web en donde saldría información innecesaria que el navegador incrusta por defecto en las impresiones. La siguiente forma la he logrado únicamente para Google Chrome e imagino que en Chromium funcionará igual.
En Firefox he intentado de todas las formas que he encontrado por la web pero ninguna me ha funcionado, tengo entendido que es un bug que tiene años el visor pdf de Firefox. Este es el error de Firefox:
Error: Permission denied to access property "print"
En fin para los que les sirva el código para Chrome es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<!DOCTYPE html> <html> <head> <title>IMPRIMIR CONTENIDO DE IFRAME CON JQUERY - KIUVOX</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Libreria JQuery --> <script type="text/javascript" src="../jquery-1.11.2.min.js"></script> <script> $(document).ready(function(){ //detectamos el click en el boton de imprimir $('#btnImprimir').click(function(){ //Hacemos foco en el iframe $('#frame').get(0).contentWindow.focus(); //Ejecutamos la impresion sobre ese control $("#frame").get(0).contentWindow.print(); }); }); </script> </head> <body> <h1>IMPRIMIR CONTENIDO DE IFRAME CON JQUERY - KIUVOX</h1> <!-- iframe con un contenido de pdf --> <iframe id='frame' src='kiuvox.pdf' style="height: 300px; width: 600px;"></iframe> <div></div> <button type="button" id='btnImprimir'>Click para imprimir</button> </body> </html> |
Si se prefiere el iframe también puede ser ocultado a través de css y la funcionalidad del script no se ve afectada.
NOTA: Recalco que según lo que he leído sobre el problema en Firefox aplica únicamente cuando el contenido del iframe es un pdf, se supone que otro tipo de contenido como imagenes no tiene este problema, no lo he comprobado.