Plugin ESC POS v3

Documentación Plugin ESC POS Desktop

En este post voy a exponer la lista de funciones disponibles al usar el Plugin para impresoras térmicas ESC POS V3 Desktop. En esta lista vas a encontrar todas las operaciones que el plugin soporta, desde la impresión de texto hasta la impresión de imágenes eligiendo el algoritmo adecuado.

Dicho plugin para impresoras térmicas soporta llamadas a través de HTTP y expone los métodos listados aquí a través de una API REST. Puedes ver la nueva documentación oficial y un diseñador de tickets.

Documentación unificada

Entre tantos artículos y actualizaciones, mantener la información actualizada en distintos puntos es un poco complejo. Por ello es que he creado una página dedicada específicamente al uso de la API que expone el plugin:

https://parzibyte.me/http-esc-pos-desktop-docs/es/

Yo te recomiendo visitar esa página que contiene todo lo que necesitas para comenzar a imprimir en impresoras térmicas desde cualquier lenguaje de programación.

Especificación del plugin

El plugin inicia un servidor web en localhost:8000 y expone la siguientes rutas.

Ruta /imprimir con método POST

Haz una petición de tipo POST a http://localhost:8000/imprimir enviando un JSON como se describe a continuación. El endpoint siempre devolverá un JSON.

Al invocar a este método debes enviarle

  1. operaciones: un arreglo de tipo Operación
  2. nombreImpresora: el nombre de la impresora como cadena
  3. serial: un serial para el plugin en caso de que cuentes con uno. No es obligatorio y puedes enviarlo como una cadena vacía

El tipo Operación es un objeto que tiene las propiedades:

  1. nombre: el nombre de la operación que encontrarás a continuación en la lista de métodos
  2. argumentos: un arreglo de tipo genérico que incluye los argumentos para la operación que se invoca. Envíalo vacío si la operación no tiene argumentos

Ejemplo para imprimir

Veamos un ejemplo para imprimir texto plano que diga “Hola mundo” en la impresora llamada PT-210. En la lista de métodos, la función para escribir texto dice: EscribirTexto(texto string) por lo que la operación se llama EscribirTexto y recibe solo un argumento de tipo string, mismo que contiene el texto. El nombre del argumento no importa, solo su contenido y orden.

Entonces el arreglo de operaciones quedaría así:

[
        {
            "nombre": "EscribirTexto",
            "argumentos": [
                "Hola mundo"
            ]
        }
    ]

Como lo vamos a imprimir en la PT-210 y no tenemos serial, nuestra carga útil queda así:

{
    "nombreImpresora": "PT-210",
    "serial": "",
    "operaciones": [
        {
            "nombre": "EscribirTexto",
            "argumentos": [
                "Hola mundo"
            ]
        }
    ]
}

Toma en cuenta que debemos codificar la carga útil como JSON, así que codificada queda así:

{"nombreImpresora":"PT-210","serial":"","operaciones":[{"nombre":"EscribirTexto","argumentos":["Hola mundo"]}]}

Supongamos que ahora queremos cortar el papel además de escribir el texto. Para ello usamos la función de corte que dice: Corte(lineas float64) así que dice que debemos invocar a la función llamada Corte enviándole la cantidad de líneas, quedando así sin codificar:

{
    "nombreImpresora": "PT-210",
    "serial": "",
    "operaciones": [
        {
            "nombre": "EscribirTexto",
            "argumentos": [
                "Hola mundo"
            ]
        },
        {
            "nombre": "Corte",
            "argumentos": [
                2
            ]
        }
    ]
}

Observa que ahora se va a escribir el texto y después se va a cortar avanzando 2 líneas previamente. En caso de que la operación no tenga argumentos, el arreglo argumentos puede ir vacío [] y si tiene más de un argumento solo coloca los valores en orden.

Ruta /impresoras GET

Haz una petición de tipo GET a http://localhost:8000/impresoras. El endpoint siempre devolverá un JSON que será un arreglo de tipo cadena conteniendo las impresoras que haya encontrado en caso de éxito y, en caso de error, una cadena conteniendo el mensaje de error.

Lista de métodos

A continuación se describe el nombre de la operación y sus argumentos. Debes enviar cada operación como un objeto dentro del arreglo operaciones, y cada operación debe tener un nombre que corresponde al nombre de la función, además de los argumentos que deben ir en el orden en el que se indica entre los paréntesis de cada función.

He movido la lista a la documentación oficial donde puedes explorar todos los métodos disponibles. Puedes comenzar revisando la operación para escribir texto y en la misma página vas a encontrar las demás operaciones.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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

  • Hola Luis.

    Puede ser que la funcion DescargarImagenDeInternetEImprimir no se pueda utilizar con imágenes .webp?

    Gracias

    • Hola. Me parece que es correcto, al invocarla (con la versión 3.5.0) me aparece:
      { "ok": false, "message": "Error invocando a DescargarImagenDeInternetEImprimir: image: unknown format" }
      Por lo que, en este momento, no es posible imprimir imágenes webp

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.