C# (C Sharp)

Imprimir en impresora térmica con C# y Visual Studio

En este artículo vamos a ver cómo comunicar C# con una impresora térmica usando Visual Studio, Mono o cualquier compilador que soporte C#. Es decir, no necesitas VS obligatoriamente siempre y cuando cuentes con el .NET framework necesario.

Imprimir ticket con C# y Visual Studio usando impresora térmica

Podrás usar C# (C sharp) para imprimir texto en una POS printer, alinear, colocar enfatizado, definir tus propios caracteres por si la impresora no lo soporta, imprimir acentos, texto según páginas de códigos y por supuesto podrás imprimir imágenes (locales, de internet o en base64), códigos QR, códigos de barras y todo lo necesario para crear tickets con C# en una thermal printer.

Para esto vamos a usar un conector que he creado con C# y un plugin gratuito. Esto funciona en Linux, Raspberry Pi, Windows y cualquier plataforma donde funcione mi plugin y C# se pueda compilar.

Prueba el nuevo diseñador

En estos días he creado un nuevo diseñador web para impresoras térmicas. El diseñador te guiará en el proceso de instalar tu impresora, compartirla e instalar lo necesario para imprimir tus diseños. Pruébalo en:

https://parzibyte.me/apps/ticket-designer/#/first-steps

Una vez que tengas tus diseños vas a poder imprimirlos desde cualquier lenguaje de programación, incluyendo C#.

Imprimir ticket en impresora térmica

Comencemos viendo un ejemplo para que veas lo sencillo que es comunicar C# con una thermal printer y crear tus facturas. Es un ejemplo muy simple que imprime texto, una imagen y un código QR además de abrir el cajón y cortar el papel.

Diseñamos nuestro ticket:

See the gist on github.

Y luego lo enviamos a una impresora térmica previamente instalada y compartida:

See the gist on github.

Así de fácil es imprimir un ticket con C#. Obviamente puedes invocar a cualquier operación, imprimir más imágenes, solo cortar el papel, solo abrir el cajón, imprimir un QR modificando la calidad, etcétera. Tú eres quien diseña los recibos.

Ahora sigue leyendo para ver cómo funciona el código y la lista de cosas que puedes hacer con tu impresora térmica usando este código que te muestro.

Funcionamiento

Para que esto funcione primero necesitas una impresora térmica que soporte el protocolo ESC POS. Debes instalarla como una impresora genérica (y si no funciona, entonces con sus controladores originales) además de compartirla como se indica en:

https://parzibyte.me/blog/2017/12/11/instalar-impresora-termica-generica/

Luego debes descargar un plugin gratuito que he desarrollado. Descárgalo según tu plataforma, y no te preocupes, no contiene virus, asegúrate de darle los permisos: https://github.com/parzibyte/plugin-impresora-termica-v3/releases/tag/3.2.1

Recuerda que el plugin se debe ejecutar en segundo plano (no abre ninguna ventana al menos que invoques a la función que te da la lista de impresoras).

Ahora ya puedes incluir las clases necesarias que presento a continuación y probar el ejemplo que, por cierto, debe esta dentro de una función asíncrona, algo así:

See the gist on github.

No tienes que instalar librerías adicionales, solo debes ejecutar el plugin, importar lo necesario y las 3 clases que se presentan a continuación. Veamos entonces las clases necesarias para enviarle comandos ESC POS a una impresora térmica desde C#.

Clases para interactuar con una impresora térmica usando C#

Comencemos viendo las clases necesarias y el conector para el plugin. Primero la clase que representa una operación que podemos hacer en la impresora térmica, por ejemplo escribir texto, avanzar líneas, abrir el cajón, etcétera.

La acción puede o no tener argumentos y estos pueden ser de cualquier tipo.

See the gist on github.

Luego vemos la clase que va a enviar las operaciones y además el nombre de la impresora térmica junto con una licencia (opcional) que será lo que se envía al plugin:

See the gist on github.

Y finalmente tenemos el conector con el cual vamos a crear un ticket, factura o recibo desde C# invocando a sus métodos. Una descripción detallada de esas funciones está en: https://gist.github.com/parzibyte/2f36655ef9d6ea8e6de73c6e09bbc735#file-documentacion-txt

El conector queda como se ve a continuación. Presta atención al método obtenerImpresoras e imprimirEn. Debes invocar a imprimirEn cuando hayas terminado de crear tu ticket y estés listo para enviarlo a una POS printer con C#, y puedes usar obtenerImpresoras para obtener la lista de las impresoras compartidas.

En el ejemplo que está al inicio de post puedes ver cómo invocar ambas funciones.

See the gist on github.

Sobre el pie de página

Si has impreso el ticket te habrás dado cuenta de que aparece un pie de página con mis créditos al final de todo ticket. Como te dije, el plugin es gratuito pero debes respetar esa parte.

Si quieres quitarlo puedes hacerlo siguiendo los pasos que se indican en:

Poniendo todo junto

Ya te mostré todo lo necesario para comunicarte desde C# con una impresora térmica. Te invito a ver el código completo (y la solución de Visual Studio) en GitHub.

Recuerda que puedes ver todos los detalles del plugin en su post de presentación ya que ahí también se listan los conectores para otros lenguajes de programación. Si necesitas ver la documentación sigue el siguiente enlace: https://gist.github.com/parzibyte/2f36655ef9d6ea8e6de73c6e09bbc735#file-documentacion-txt

No olvides que también existe una versión para Android y que igualmente tengo otro plugin gratuito para imprimir un PDF silenciosamente desde cualquier lenguaje de programación.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • Que tal excelente el funcionamiento del plugin, tengo una duda, como controlas el tamaño del ancho de papel de la impresora, en mi caso utilizo papel de 50mm y 80mm, de que manera controlas esa parte, muchas gracias.

    • Hola. Por el momento solo he trabajado con impresoras que tienen un único tamaño de papel, sería cuestión de que me hiciera llegar una impresora con esas características para poder probar

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.