2010-04-16 22 views
11

Quiero imprimir una página web usando JavaScript. Pero no quiero abrir la página como una ventana emergente. ¿Cómo puedo imprimir directamente una página web como 'mypage.aspx' usando el método JavaScript window.print sin abrirlo como una ventana emergente?¿Cómo imprimir una página web sin abrir una ventana emergente?

también la condición es 'no quiero utilizar cualquier ActiveX para esta'

Aquí es lo que quiero decir:

var printWindow, printData; printWindow = window.open("", "printVersion", "menubar,scrollbars,width=640,height=480,top=0,left=0"); 

printData=document.getElementById("lblReport").innerHTML; printWindow.document.write(printData); 
printWindow.document.close(); 
printWindow.print(); 
+3

¿Cuál es el problema con llamar a window.print en su página web? – Alsciende

+0

Alsciende, No hay problema para llamar a esto, pero antes de llamar a esto tengo que abrir una ventana que no quiero abrir. Aquí está el escenario: Tengo una página page1.aspx y ahora he generado algunos out put y que está en page2.aspx ahora ¿cómo puedo imprimir page2.aspx sin abrir el mismo? –

+3

Gaurav, llamando a window.print(), como Rosdi sugirió primero, * no * abrirá una ventana emergente. Abrirá un cuadro de diálogo de las principales, esta no es una ventana emergente, tampoco es algo que puedas evitar. Esta ventana es necesaria para que el usuario pueda seleccionar la impresora a imprimir, el tamaño de papel, etc. –

Respuesta

22

La solución más simple es cargar el contenido de ese MyPage.aspx a un marco flotante de entonces iframes onLoad evento llame a la window.print.

<button onclick="printPage()">print</button> 
<div id="printerDiv" style="display:none"></div> 
<script> 
    function printPage() 
    { 
     var div = document.getElementById("printerDiv"); 
     div.innerHTML = '<iframe src="mypage.aspx" onload="this.contentWindow.print();"></iframe>'; 
    } 
</script> 
+1

¡Me ayudó a resolver este problema también, gracias por el fragmento de código! –

+0

¿Por qué este truco no funciona en Firefox? –

+0

debería funcionar, consulte la Consola de errores, tal vez haya/hay errores js, compruebe. – jerjer

6
<html> 
    <head> 
     <title>Print</title> 
     <link rel="stylesheet" type="text/css" media="all" href="all.css" /> 
     <link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
    </head> 
<body> 
    <p>I get printed</p> 
    <form> 
     <input type="button" onclick="window.print()" value="Print" /> 
    </form> 
</body> 
</html> 

Asegúrese all.css es en la parte superior y print.css en la parte inferior, debería funcionar.

+0

He hecho todo, por favor revise mi pregunta y comentario primero y luego sugiera alguna solución. –

+5

Gaurav, recibe ayuda gratuita de una comunidad de voluntarios. Regañarlos por respuestas que no te gusten no es una buena manera de alentarlos a pasar su tiempo para ayudarte ... – sblom

+0

@Gaurav, reescribo la respuesta para incluir una muestra html que funcione, espero que ayude. –

1

Um. Simplemente use window.print(); directamente en la página. Por sí solo no abre una nueva ventana (aparte de la ventana de propiedades de impresión para establecer las opciones de impresión).

2

No estoy seguro de si funciona, pero puede intentar crear iframe invisible, cargar page2.aspx en él y luego imprimirlo.

0

Puede usar una hoja de estilo de impresión CSS y evitar el uso de javascript por completo; todo lo que el usuario tiene que hacer es imprimir la página. p.ej.

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
Cuestiones relacionadas