In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Cómo imprimir Html directamente ?

Foro público de Xailer en español
Responder
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

Cómo imprimir Html directamente ?

Mensaje por xAvi »

¿Alguien sabe como poder imprimir html directamente a la impresora sin que salga el explorador ni pregunte nada?
Un saludo
Xavi
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

Cómo imprimir Html directamente ?

Mensaje por xAvi »

Gracias José,
> creo recordar que usando ShellExecute( archivo.html, /print, ... ).
>
ShellExecute( ::Handle, 'print', 'archivo.html' )
Pero no sé cómo evitar que salga el dialogo de imprimir.
¿Alguien sabe cómo conseguirlo, algún navegador, ocx, lib o dll?
Un saludo
Xavi
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

Cómo imprimir Html directamente ?

Mensaje por rafa »

http://msdn.microsoft.com/en-us/library ... S.85).aspx
¿ El parametro de show a cero ?
Si tienes una impresora por defecto, no deberí­a salirte,mira si tienes
impresora por defecto o selecciona una por defecto.
Saludos
Rafa Carmona
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

Cómo imprimir Html directamente ?

Mensaje por xAvi »

Gracias Rafa,
> http://msdn.microsoft.com/en-us/library ... S.85).aspx
>
> ¿ El parametro de show a cero ?
>
> Si tienes una impresora por defecto, no deberí­a salirte,mira si tienes
> impresora por defecto o selecciona una por defecto.
>
Pero no salgo y me da que por aquí­ vamos mal.
http://support.microsoft.com/default.aspx/kb/247671
"Actualmente no hay ningún método fácil para imprimir varias páginas mediante programación desde la secuencia de comandos sin
que se muestre un cuadro de diálogo."
Bueno, pues eso, ¿Alguien sabe el "método difí­cil"?
Resulta que el aplicativo de la casa matriz de mi cliente dispone de todos los formatos de impresión; albaranes, facturas,
formularios, etc... en html de forma que nada más se deben remplazar unas "macros" con los datos y pueden imprimirlos, generar
PDFs o presentarlos por el navegador. Y cuando sus programas facturan o imprimen un albarán no les sale el dichoso cuadro de
dialogo.
Un saludo
Xavi
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Cómo imprimir Html directamente ?

Mensaje por notengo »

xAvi,
creo recordar que usando ShellExecute( archivo.html, /print, ... ).
Saludos,
José Lalí­n
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Cómo imprimir Html directamente ?

Mensaje por notengo »

xAvi,
he encontrado un mensaje en un foro de C donde dicen que le pasan como
último parámetro a ShellExecute() el número 12. No sé de dónde sale porque
no se corresponde con ninguna constante SW_ pero te lo comento por si
quieres probarlo.
ShellExecute( ::Handle, "print", "test.html", 0, "C:", 12 )
Sobre la aplicación que comentas, ¿sabes si tienen Word instalado? Quizás
lo estén haciendo manejando Word a través de ActiveX y por eso no sale el
diálogo de impresión.
Otra cosa que puedes hacer es crear un objeto IExplorer y a través de su
interface COM, cargar el archivo e imprimirlo desde ahí­. Partiendo del
ejemplo samplesocxsourceform1.prg, añade una opción al menú y dirige su
evento OnClick al siguiente código:
#define OLECMDID_PRINT 6
#define OLECMDEXECOPT_DODEFAULT 0
#define OLECMDEXECOPT_PROMPTUSER 1
#define OLECMDEXECOPT_DONTPROMPTUSER 2
METHOD Menu1ItemXXClick( oSender, oMenu ) CLASS TForm1
::oOCX:ExecWB( OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER )
//::oOCX:ExecWB( OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 1 )
RETURN Nil
También he visto que puede hacerse a través de RunDll32:
rundll32.exe mshtml.dll,PrintHTML "c:testtest.html"
Pruébalo desde una consola y si funciona puedes usarlo con ShellExecute().
Saludos,
José Lalí­n
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

Cómo imprimir Html directamente ?

Mensaje por xAvi »

Gracias José,
Nada, siempre sale la pregunta de Imprimir...
Desde IE 5 se considera una posible vulnerabilidad del navegador y siempre sale el cuadro de dialogo.
En FireFox lo mismo, por ejemplo con un script en el html.-
<script type="text/javascript">
window.print();
</script>
> ShellExecute( ::Handle, "print", "test.html", 0, "C:", 12 )
Ni 12 ni -1 ni del 1 al 99
> ::oOCX:ExecWB( OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER )
Tampoco ya lo probé, es parecido al ejemplo de lo que se consideran un problema de seguridad ???
http://support.microsoft.com/default.aspx/kb/247671
for (var i = 0; i < 100000; i++) {
WebBrowser1.ExecWB 6, -1
}
> rundll32.exe mshtml.dll,PrintHTML "c:testtest.html"
Esto se puede probar por cualquiera de forma simple con cualquier fichero html.
Basta con teclearlo o hacer un copiar y pegar en la consola de comandos.
Por favor, confirmarme que sale el cuadro de dialogo. A ver si va a ser sólo un problema mio.
Bueno, "Hecha la ley hecha la trampa" si no puedo evitar que salga el cuadro de dialogo como mí­nimo puedo hacer que el usuario
no se entere y ya me he creado una Function PrintHtml( cHtml ) para hacer que el programa trabaje mientras encuentro una solución.
Creo que la solución no pasa por IE y componentes.
Agradecerí­a más sugerencias, sigo investigando.
Un saludo
Xavi
rafa
Mensajes: 119
Registrado: Vie Ene 16, 2009 9:59 am

Cómo imprimir Html directamente ?

Mensaje por rafa »

Una solucion seria, es una barbaridad si, pero por probar;
Abres el IEXPLORER pero como ActiveX, abres pagina y ejecutas el method
print....
¿ Lo has probado ?, Vamos suena a estupido... pero cosas más raras me
estan pasado... ;-(
Saludos
Rafa Carmona
notengo
Mensajes: 417
Registrado: Vie Oct 12, 2007 1:29 pm

Cómo imprimir Html directamente ?

Mensaje por notengo »

xAvi,
¿has probado ejecutando el Spy++ mientras la otra aplicación imprime el
HTML? Quizás así­ puedas ver más claramente cómo lo está haciendo.
Saludos,
José Lalí­n
Responder