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

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
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:

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

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í:

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.

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:

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.

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:

Contratar una licencia para el plugin de impresora térmica V3

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.

2 comentarios en “Imprimir en impresora térmica con C# y Visual Studio”

  1. 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.

    1. 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

Dejar un comentario