Página 1 de 1

Cómo imprimir Html directamente ?

Publicado: Mié Mar 25, 2009 11:56 am
por xAvi
¿Alguien sabe como poder imprimir html directamente a la impresora sin que salga el explorador ni pregunte nada?
Un saludo
Xavi

Cómo imprimir Html directamente ?

Publicado: Jue Mar 26, 2009 12:09 pm
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

Cómo imprimir Html directamente ?

Publicado: Jue Mar 26, 2009 12:50 pm
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

Cómo imprimir Html directamente ?

Publicado: Jue Mar 26, 2009 9:28 pm
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

Cómo imprimir Html directamente ?

Publicado: Jue Mar 26, 2009 10:41 pm
por notengo
xAvi,
creo recordar que usando ShellExecute( archivo.html, /print, ... ).
Saludos,
José Lalí­n

Cómo imprimir Html directamente ?

Publicado: Jue Mar 26, 2009 10:49 pm
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

Cómo imprimir Html directamente ?

Publicado: Vie Mar 27, 2009 6:45 pm
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

Cómo imprimir Html directamente ?

Publicado: Lun Mar 30, 2009 1:19 pm
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

Cómo imprimir Html directamente ?

Publicado: Lun Mar 30, 2009 2:49 pm
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