Cómo imprimir etiquetas(código de barras) desde una aplicación Ruby on Rails?
ruby-on-rails printing (4)
Mi primera aplicación que he desarrollado en RoR es para algunas PC Kiosk con pantalla táctil que se usan en nuestro stock. Cuando el almacenista recogió algo de material, ingresa la cantidad en un Formulario.
Ahora quiero imprimir una etiqueta que contenga: nombre del cliente, descripción del material, cantidad y un código de barras en nuestra impresora Zebra.
¿Cómo podría hacer eso desde una aplicación Ruby on Rails?
¿Enviar directamente los caracteres de control necesarios para ZPL (Zebra Printer Language) del controlador? (no muy cómodo)
Cree una vista en HTML, envíela al cliente y el cliente debe imprimirla. (no muy cómodo y propenso a errores, ya que el trabajador de stock tiene que hacer pasos adicionales, puede elegir la impresora equivocada o tal vez no imprimir la etiqueta en absoluto)
Cree un documento en formato PDF desde el controlador y envíelo a la impresora desde el servidor (oh, no, la impresora no entiende el pdf, entonces tengo que controlar un lector de PDF para imprimir? Eso no sería muy rápido ya que enviará la etiqueta como una imagen gráfica a la impresora
Crea una gema que oculte toda la lógica necesaria para imprimir? (¿Hay gemas que ya hacen esto?)
Agradecería cualquier comentario.
Gracias
Klaus
Suena como un trabajo para una extensión de rubí C. ¿Quizás uno que también envuelve algo como la biblioteca de códigos de barras gnu http://www.gnu.org/software/barcode/ y algún otro estándar abierto para la impresora Zebra, si existe? Una vez hice una aplicación de rieles que creaba cupones e hice un uso intensivo del código de barras gnu, pero hice un simple comando de shell para interactuar con él.
Enviaría la ZPL sin procesar a la impresora. Puede usar una herramienta como Bartender (le sugiero que instale solo Bartender desde ese enlace. Básicamente puede diseñar su etiqueta en esta herramienta. Después de que haya diseñado su etiqueta, descargará los controladores de la impresora barman para su impresora Zebra y configurará una la impresora ficticia con estos controladores e imprima esta etiqueta que diseñó en un archivo. Esto le dará la raíz en bruto. A partir de esto, puede básicamente sustituir todos los datos dinámicos en el archivo zpl que imprimió en el paso anterior y enviarlo directamente a la impresora vía serial, tcp / ip o usb.
Editar: Encontré una solución mucho mejor a medida que continuaba investigando sobre esto. Esto se editó significativamente para centrarse en la solución de applet de Java que terminé usando.
Básicamente, generará la etiqueta como texto ZPL sin formato. Luego debe enviar ese texto simple a la impresora, lo que generará la etiqueta.
Si su servidor puede acceder a la dirección IP de la impresora, puede copiarla a la impresora directamente desde el proceso del servidor. Si se trata de una aplicación web remota, debe hacer que el cliente envíe la ZPL por usted. La zona de pruebas del navegador hace que sea difícil de lograr: los conductores quieren intervenir en el camino. Hay algunas opciones; el más común es usar un pequeño applet de Java o Flash para hacer la copia real. Si puede obtener el navegador web específico que sus usuarios están utilizando para imprimir en una impresora de texto plano sin agregar nada, puede usar la impresión local, pero en general, el enfoque más sólido es utilizar un applet auxiliar de Java.
El applet de Java que uso para esto es jZebra: http://code.google.com/p/jzebra/
Es un enfoque muy claro y directo, mira el HTML de muestra en el paquete de descarga y algunas líneas de código imprimen la etiqueta. Acabo de editar la muestra y estoy planeando usarla como mi ventana emergente del código de producción ... es realmente así de simple.
Dos advertencias con este enfoque:
- Sus usuarios deben tener el JRE instalado
- jZebra encuentra la impresora Zebra por nombre de impresora. Hay guías muy específicas (tienen instrucciones detalladas para la instalación de Mac, Windows y Linux) para lo que necesita hacer, pero están bien documentadas y solo tiene que hacer que los usuarios sigan las instrucciones. Una vez que está configurado correctamente, funciona muy bien.
Solución más simple, y creo que también mejor, generalmente la mayoría de los navegadores y máquinas tienen instalado el visor de PDF. Así que solo cree etiquetas como documentos PDF y envíelos al navegador.
Hemos implementado la impresión de etiquetas utilizando la impresora Zebra en ROR de la siguiente manera.
- Cree páginas de etiquetas de formato exacto en html.
- Convierta el html a pdf usando wickedPDF.
Por lo general, las etiquetas también contienen códigos de barras.
Entonces la solución general sería,
- Crea códigos de barras usando la gema barbie.
- Crea html usando códigos de barras y tus datos actuales que deben ir en la etiqueta.
- Convierta la vista html a PDF.