[ubuntu-ar] [OT] Imprimir desde pagina web en la impresora del cliente

Marcelo Fernandez marcelo.fidel.fernandez at gmail.com
Thu Sep 30 15:33:12 BST 2010


El día 30 de septiembre de 2010 10:48, Nicolas Bevilacqua
<nicobevilacqua en gmail.com> escribió:
> Lista, tengo una consulta, medio off topic.
>
> Me está por salir un laburo en donde me piden armar una aplicación web en la
> que tengo que generar e imprimir etiquetas con código de barras entre otras
> cosas. La aplicación es web ya que quieren acceder desde varios lugares
> geográficos.
>
> Necesito armar toda la arquitectura de la red ya que actualmente no poseen
> nada y se manejan todo por papel.

Buenísimo.

> Les digo mi idea: La aplicación va a correr en un servidor ubuntu, con un
> apache y va a estar hecha en mysql y php.

Y bueh... vamos a tratar de ayudarte igual :-P

> Mi problema viene a la hora de definir como voy a imprimir las etiquetas.
>
> Lo que quiero hacer es montar un servidor CUPS en la misma máquina con el
> servidor web, y enviar a imprimir desde php pdfs generados con las etiquetas
> que se desean imprimir.
>
> Por lo que estuve leyendo, esto tendría que funcionar.
>
> Ahora, la cuestión es la siguiente, que pasa si la página web se encuentra
> en un hosting pago, y mi servidor CUPS esta en el lado del cliente? Tengo
> forma de comunicar el sistema web con el servidor CUPs sin necesidad de
> interacción con el cliente. A ver si me explico, el cliente web (firefox)
> envia a imprimir una determinada etiqueta - el servidor envía la orden a la
> impresora del cliente que se encuentra compartida por CUPs - la etiqueta se
> imprime sin que el cliente haga nada más.
>
> Es muy complicado lo que quiero hacer ?

Sí, es complicado porque es muy probable que falle; los firewalls/NATs
te van a hacer la vida imposible (sencillamente "no se hace así" :-P).
Con esta arquitectura de aplicación (puede haber otras), se me ocurre
que tenés estas opciones:

1) (fácil) Que el usuario descargue el pdf y se encargue de
imprimirlo. Lo bueno es que sale tal como lo generó el servidor. Lo
malo es que "perdés el control" de que efectivamente fue impreso (en
algunos casos esto es un problema).

2) (fácil) Generar en HTML lo que querés imprimir para que el Firefox
lo mande a impresión directamente (al usuario le aparecería el cuadro
de diálogo de impresión, como cuando le dás "imprimir" a un mail en
GMail). Lo malo es que si el estilo es medio complicado (y más si son
códigos de barra) se te puede complicar que salga tal como querés.

3) (medio) Usar un applet Java firmado (o que por políticas el usuario
habilite su ejecución) que corra en el browser y dispare la impresión.
Lo bueno es que es con sólo instalar el soporte de applets de Java el
navegador le cede el control a tu applet y podés imprimir con control
de tu aplicación y devolver un "OK" o "Error" a tu server. Lo malo es
que es más complejo que lo anterior.... y es Java. :-P

4) (difícil) Crear un agente (aplicación de escritorio) muy liviana o
un plugin para tu navegador que el usuario se instale y que se
encargue de descargar e imprimir directamente. Lógicamente, este
componente tiene que establecer un canal aparte/diferente de
comunicación al que tiene el navegador para recibir la orden de
"descargar e imprimir".
Quizás con Mozilla Jetpack [1] (una biblioteca para hacer extensiones
en Javascript) puedas experimentar algo; eso sí, sólo va a funcionar
en Firefox. Chrome/Chromium tiene un motor de extensiones bastante
sencillo [2] que también podés programar en Javascript (y creo que
Jetpack se inspiró en este).

> Conocen de alguna otra forma de
> hacerlo ? Estuve leyendo de que se puede hacer con activex y con clientes
> windows, pero les soy sincero, tengo 0 ganas de usar nada que empieze con
> Microsoft.

El ActiveX en Windows es similar a la opción 3, nada más que con una
tecnología en desuso, muy propietaria y que sólo funciona en
Windows+IE.

[1] https://jetpack.mozillalabs.com/
[2] http://code.google.com/chrome/extensions/index.html

Ahí tenés un menú de opciones para elegir. :-)

Saludos
-- 
Marcelo F. Fernández
Buenos Aires, Argentina
Licenciado en Sistemas - CCNA

E-Mail: marcelo.fidel.fernandez en gmail.com
Blog: http://blog.marcelofernandez.info
Twitter: http://twitter.com/fidelfernandez



More information about the Ubuntu-ar mailing list