Hoy me he enterado, dicen que más vale tarde que nunca, que la estándar de imprimir con javascript:
window.print();
no funciona siempre en Opera. Para que en lo haga hay que tener en cuenta que la página debe estar completamente cargada. Si esto se cumple, el siguiente ejemplo funciona:
<input type="button" value="Print this page" onClick="javascript:window.print();" ID="Button1" NAME="Button1">
El problema viene cuando antes de imprimir necesitamos hacer algo sobre el HTML ( abrimos una nueva ventana, modificarlo, etc). Tomemos este ejemplo, en el que en la función ocultar() debe hacer cosas previas a la impresión.
function imprimePagina(){ ocultar(); // funcion que necesita ocultar información que no debe ser impresa. window.print(); // resto de código; }
Este ejemplo funciona en IE, Firefox, Chrome pero no en Opera. Para solventarlo podríamos probar con:
function imprimePagina() { ocultar(); // funcion que necesita ocultar información que no debe ser impresa. window.setTimeout(function () { window.print(); }, 5); // resto de código; }
Que, si no he escrito mal el ejemplo, debiera funcionar. En el caso de que abriéramos una ventana hemos de recordar lo que comentamos al principio: la página, la nueva, debe estar completamente cargada antes de intentar imprimirla en Opera. Como no controlamos en qué momento sucede esto, podemos confiar en el evento load de la ventana para imprimirla.
window.onload = function () { window.setTimeout(function () { window.print(); }, 500); }
Espero que a alguno le valga de algo 🙂
Referencia: http://stackoverflow.com/questions/3482428/window-print-not-working-with-opera-browser