2009-07-08 75 views
21

Como decía en el tema, tengo que crear una función para una aplicación web que permita a los usuarios enviar impresiones directamente sin preguntar ningún cuadro de diálogo; es decir, haga clic y imprimir, simple! pero no para mí :(.Imprima directamente desde el navegador sin ventana emergente de impresión

Por favor, sugiero lo que sería la mejor opción y cómo debería escribirlo (tecnología).

Sugerir por favor!

Gracias.

EDITAR : La impresión debe enviarse en la impresora predeterminada del usuario

+0

que ya habían preassumed que esta opción sería posible para IE, haciendo un control ActiveX. Pero no recordé que esto también podría hacerse a través de vbscript. Tengo suerte y encontré esto: http://msdn.microsoft.com/en-us/library/ms976105.aspx No lo he intentado todavía, pero esto me da una útil mirada de recordatorio que podría salvarme mi mano sucia de activeX –

+0

Sé que este hilo era muy viejo. Pero tal vez alguien intente averiguarlo, por favor revise esto: https://github.com/apinprastya/pulas – Apin

+0

Algunas otras soluciones de impresión del navegador están disponibles aquí: http://stackoverflow.com/a/28783269/3196753 – tresf

Respuesta

13

No he encontrado la solución para otros navegadores . Cuando publiqué esta pregunta, IE estaba en la prioridad más alta de y con gusto encontré . Si tiene una solución para otros navegadores (firefox, safari, ópera), por favor, comparta aquí. Gracias.

VBSCRIPT es mucho más conveniente que la creación de un ActiveX en Visual Basic 6 o C#/VB.NET:

<script language='VBScript'> 
Sub Print() 
     OLECMDID_PRINT = 6 
     OLECMDEXECOPT_DONTPROMPTUSER = 2 
     OLECMDEXECOPT_PROMPTUSER = 1 
     call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 
End Sub 
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>" 
</script> 

Ahora, llamando al:

<a href="javascript:window.print();">Print</a> 

enviará impresión sin ventana de impresión emergente.

+0

Intenté implementar exactamente el mismo código en Javascript y no funcionó. Solo en VBScript. ¿Por qué funciona en VBScript pero no en Javascript? –

+0

@Jordao Creo que las variables de configuración anteriores son solo miembros de vbscript. Aquí, en el script anterior, lo que principalmente hacemos es restablecer las variables de configuración. Esto es solo un instinto pensado en tu pregunta. –

+0

las variables a las que se refiere son solo constantes. Deberían funcionar igual en Javascript. –

1

No creo que esto sea posible. El cuadro de diálogo que se muestra permite al usuario seleccionar una impresora para imprimir. Así que, digamos que lo haría para que su aplicación simplemente haga clic e imprima, y ​​un usuario hace clic en su botón de impresión, pero tiene dos impresoras conectadas a la computadora. O, más probablemente, ese usuario esté trabajando en un edificio de oficinas con 25 impresoras. Sin ese cuadro de diálogo, ¿cómo sabe la computadora a qué impresora imprimir?

+0

¿Qué tal ActiveX? control para IE que enviará una impresión en la impresora predeterminada del usuario. Esto parece bastante factible. Pero invertir horas de esfuerzo para crear dicho activoX no está justificado para proporcionar funciones solo para usuarios de IE. –

+0

Zachary, la secuencia de comandos anterior envía un comando de impresión en una impresora predeterminada sin mostrar ninguna ventana emergente. Pero esto es solo para IE. Espero que esto responda a las dudas que tuvimos :) –

+0

Oh wow, ni siquiera pensé en usar VBScript. Genial, Ramiz. Si solo está utilizando IE, entonces está completamente configurado: D –

-3

Esto debería funcionar, lo intenté por mí mismo y funcionó para mí. Si pasa True en lugar de false, aparecerá el cuadro de diálogo de impresión.

this.print(false); 
+0

no hay método de impresión() disponible en el script java con parámetros booleanos. –

+0

Incluso si pudiera hacer esto, por razones de propiedad no implementaría. A menos que sea una aplicación específica utilizada en el trabajo por un subconjunto específico de personas. Incluso si, imagine si mi impresora fuera a imprimir automáticamente simplemente visitando una página y sin confirmación de lo que quería imprimir. 1. Creo que hay un posible virus ya que ni siquiera me preguntaron si quería imprimir. 2. Perdería un montón de papel en las máquinas de personas. ¿Qué sucede si solo quieren 1 página de un informe de 15 páginas? FIN LESSION: La impresión no debe realizarse sin pasar por los protocolos de impresión. – Spoo

3

AttendStar creado un complemento gratuito que suprime el cuadro de diálogo de impresión y elimina todos los encabezados y pies de página para la mayoría de las versiones de Firefox. .

https://addons.mozilla.org/en-US/firefox/addon/attendprint/

Con esa característica de que puede utilizar $ ('img') jqprint(); y jqprint para jquery solo imprimirá esa imagen llamada automáticamente desde su aplicación web.

3

IE9 ya no es compatible con activar Print() VBScript llamando a window.print() como IE7 e IE8 do, y así window.print() ahora siempre activará el diálogo de impresión en IE9.

La solución es bastante simple. Solo necesita llamar a Print(), en lugar de window.print() en el evento onclick.

He descrito la corrección con más detalle en una respuesta a otra pregunta, con un código de trabajo que muestra una sintaxis HTML ligeramente actualizada (tanto como sea posible mientras se prueba como código de trabajo).

Puede encontrar que código de ejemplo aquí:

Bypass Printdialog in IE9

0

this.print (false);

Intenté esto en Chrome, Firefox y IE. Funciona solo en Firefox e IE, usa la impresora predeterminada (con la configuración de impresión predeterminada) y solo funciona cuando renderizo un PDF (uso Foxit Reader con el Modo de lectura segura deshabilitado). Chrome muestra el diálogo de impresión, también los otros navegadores cuando renderizo una página HTML.

0

Para los navegadores IE, funciona la "solución VBScript".

Pero como se mencionó por @purefusion en Bypass Printdialog in IE9, Use Imprimir() en lugar de window.print()

Cuestiones relacionadas