Principales respuestas
Comunicar una pag web con una app de escritorio

Pregunta
-
Saludos, lo que busco es que la pag web le pase una informacion y la app de escritorio la imprima
ya que desde el navegador no puedo imprimir desde un puerto COM
si me pueden ayudar para orientarme se los agradecere enormemente.
Gracias a todos....
jorggeD
miércoles, 17 de enero de 2018 17:00
Respuestas
-
En principio, es imposible. Y es imposible aposta, por motivos de seguridad. Los navegadores se construyen expresamente de manera que no puedan interactuar con las aplicaciones de escritorio, para garantizar que cuando estás navegando por internet no suceda que de repente al pasar por una página concreta se ponga a manipular tus aplicaciones de escritorio.
Podrías hacerlo al revés: que sea la aplicación de escritorio la que tome control del navegador y lea de éste la información a imprimir. Esto sí que es legal, y puede hacerse de varias formas, desde controlar el propio Internet Explorer a través de COM (pero no funcionará con otros navegadores), hasta embeber un control WebBrowser en tu aplicación de escritorio y acceder a su DOM, o incluso usar la clase WebClient u otra similar para traer información directamente desde el servidor web.
La alternativa es embeber un control en el navegador, tal como un ActiveX o similar, y que sea ese control el que interactúe con la aplicación de escritorio. Pero esto es un tipo de programación completamente distinto, y requiere autorización por parte del usuario que usa el navegador, no es suficiente con navegar a la página para que funcione inmediatamente.
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
- Marcado como respuesta JorggeD jueves, 18 de enero de 2018 19:27
miércoles, 17 de enero de 2018 17:15Moderador
Todas las respuestas
-
En principio, es imposible. Y es imposible aposta, por motivos de seguridad. Los navegadores se construyen expresamente de manera que no puedan interactuar con las aplicaciones de escritorio, para garantizar que cuando estás navegando por internet no suceda que de repente al pasar por una página concreta se ponga a manipular tus aplicaciones de escritorio.
Podrías hacerlo al revés: que sea la aplicación de escritorio la que tome control del navegador y lea de éste la información a imprimir. Esto sí que es legal, y puede hacerse de varias formas, desde controlar el propio Internet Explorer a través de COM (pero no funcionará con otros navegadores), hasta embeber un control WebBrowser en tu aplicación de escritorio y acceder a su DOM, o incluso usar la clase WebClient u otra similar para traer información directamente desde el servidor web.
La alternativa es embeber un control en el navegador, tal como un ActiveX o similar, y que sea ese control el que interactúe con la aplicación de escritorio. Pero esto es un tipo de programación completamente distinto, y requiere autorización por parte del usuario que usa el navegador, no es suficiente con navegar a la página para que funcione inmediatamente.
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
- Marcado como respuesta JorggeD jueves, 18 de enero de 2018 19:27
miércoles, 17 de enero de 2018 17:15Moderador -
hola
se me ocurre que podrias evaluar hacer uso de signalr, con este podrias comunicar un server web con una aplicacion local
Using SignalR in WinForms and WPF
para poder aplicarlo necesitaras .net 4 o superior
por supuesto vas a tener que modificar la aplicacion web para que pueda establecer el canal websoket de signalr
desde la web por medio del puerto 80 establecer un socket por donde recibir la accion de impresion en la aplicacion winform instalada en la pc
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP miércoles, 17 de enero de 2018 17:21
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
miércoles, 17 de enero de 2018 17:20 -
Lo más senzillo para solventar tu problema y teniendo en cuenta que lo que te han contestado es verdad, es que tu app web en tu cliente descargue archivos en una carpeta y que tu aplicación de escritorio (ya sea un servicio windows, wpf, o app directamente vaya revisnado el conteido de esa carpeta y procesando los ficheros que podrian estar en formato json o xml.
Resumiendo en la mejor opción:
Crear un servicio de windows que imprime cierta información a partir de ficheros xml o json que se descargan en un ordendor en una carpeta que por ejemplo se llama archivos_pendientes desde un navegador que se conecta a una aplicación web y que contienen la informaicón a imprimir desde ese servicio contra el puerto com. Una vez procesado e impreso correctamente puedes moverlos a otra carpeta llamada procesados
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
miércoles, 17 de enero de 2018 18:50 -
muchas gracias por sus respuesta, el proyecto es hacer un sistema de facturacion de una empresa en la web pero desde el navegador es imposible imprimir por la impresora fiscal, tengo que conformarme con la aplicacion de escritorio en comunicacion con el servidor o se podria hacer de otra forma o algo parecido?
jorggeD
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
- Votado como útil Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
miércoles, 17 de enero de 2018 21:38 -
Podrías mapear la impresora com del cliente en el servidor e imprimir desde la web del cliente en el servidor q hospeda la app web de facturación.
Es lo mas habitual.
- Propuesto como respuesta Pablo RubioModerator miércoles, 17 de enero de 2018 23:23
miércoles, 17 de enero de 2018 22:43 -
pero esto lo podria hacer solo con internet explorer o puedo usar cualquier navegador?
jorggeD
jueves, 18 de enero de 2018 1:30 -
[...] puedo usar cualquier navegador?
Veamos, de las varias cosas que te han contestado:
- Controlar el navegador mediante COM o embeber un WebBrowser: Solo Internet Explorer.
- Abrir una comunicación mediante SignalR: Cualquier navegador.
- Mapear la impresora al servidor: No depende del navegador, depende de que haya comunicación de red entrante al PC desde el servidor (lo cual usualmente implica que solo se puede hacer dentro de la red local, no por Internet).
- Propuesto como respuesta Pablo RubioModerator jueves, 18 de enero de 2018 18:57
jueves, 18 de enero de 2018 7:23Moderador -
gracias ya estoy claro en el asunto
jorggeD
jueves, 18 de enero de 2018 19:26