Demostrar capacidades del plugin para impresoras térmicas

Instalación y uso del plugin para impresoras térmicas V2

Este artículo describe la documentación del plugin para impresoras térmicas versión 2. Aquí se detalla cómo descargar y usar el plugin para la impresión directa desde la nube (aunque técnicamente se hace del lado del cliente).

Recuerda que este plugin no es para nada compatible con la versión 1, así que olvida todo lo que sepas sobre la versión anterior.

Instalación del plugin en Windows

  1. Instala y comparte tu impresora, puede ser genérica o con sus controladores; y colócale un nombre sin espacios ni caracteres especiales.
  2. Desde el panel de control imprime una página de prueba en la impresora y verifica que la misma sea impresa correctamente.
  3. Descarga el plugin y ejecútalo. Concede los permisos para el firewall en caso de que el mismo lo solicite. Recuerda que el plugin se va a ejecutar en segundo plano. Si quieres detenerlo puedes abrir el administrador de tareas.
  4. Ve a este ejemplo de las capacidades del plugin, y elige tu impresora de la lista. Si no aparece en la lista significa que no la instalaste correctamente. Revisa los puntos anteriores.
  5. Al presionar el botón, debe imprimirse un ticket parecido al siguiente:
Demostrar capacidades del plugin para impresoras térmicas
Demostrar capacidades del plugin para impresoras térmicas

Felicidades, ya puedes usar el plugin. Ahora puedes proceder a leer la documentación o ver el código de los ejemplos.

Nota: tal vez quieras hacer que el conector se ejecute siempre que inicie Windows.

Uso del conector dentro de JavaScript

Asegúrate de que el conector se está ejecutando. Ahora descarga el script e inclúyelo en tu proyecto:

<!-- Cargar el script conector -->
<script src="ConectorPlugin.js"></script>

Con eso, tendrás la clase ConectorPlugin de manera global. Después, dentro de tu script en donde quieras usar al conector, crea una instancia de la clase ConectorPlugin así:

const conector = new ConectorPlugin();

Ahora puedes comenzar a imprimir tickets.  La sintaxis es:

const conector = new ConectorPlugin();
conector.algunaOperación(argumentos);
conector.algunaOperación(argumentos);
conector.otraOperación(argumentos);
/*
  ...
*/
conector.imprimirEn(nombreImpresora)

Básicamente es crear la instancia, invocar operaciones (por ejemplo la alineación, texto, corte de papel, una imagen, etcétera) y finalmente llamar a imprimirEn pasándole el nombre de la impresora.

También puedes encadenar métodos, así:

new ConectorPlugin()
.algunaOperación(argumentos)
.algunaOperación(argumentos)
.otraOperación(argumentos)
.imprimirEn(nombreImpresora);

Ambos métodos son válidos y puedes usar el que más te guste.

La función imprimirEn devuelve una promesa. Al resolverse, devolverá true en caso de éxito, y una cadena en caso de error.

conector.imprimirEn("Mi impresora")
.then(respuestaAlImprimir => {
    if (respuestaAlImprimir === true) {
        // Todo OK
    } else {
        // Error. Imprime "respuestaAlImprimir" para obtener una pista
    }
});

Recuerda que igualmente puedes usar async y await. El código anterior quedaría así:

const respuestaAlImprimir = await conector.imprimirEn(nombreImpresora);
if (respuestaAlImprimir === true) {
    // Todo OK
} else {
    // Error. Imprime "respuestaAlImprimir" para obtener una pista
}

En el ejemplo vas a entenderlo de mejor manera.

Ejemplo simple de impresión de ticket

Ejemplo simple de impresión en impresora térmica usando JavaScript y Plugin
Ejemplo simple de impresión en impresora térmica usando JavaScript y Plugin

El ejemplo más simple queda así:

const conector = new ConectorPlugin();
conector.texto("Hola mundo\n");
conector.imprimirEn("Mi impresora")
    .then(respuestaAlImprimir => {
        if (respuestaAlImprimir === true) {
            console.log("Impreso correctamente");
        } else {
            console.log("Error. La respuesta es: " + respuestaAlImprimir);
        }
    });

También puede ser con await:

// Recuerda que debes estar dentro de una función async para usar await
const conector = new ConectorPlugin();
conector.texto("Hola mundo\n");
const respuestaAlImprimir = await conector.imprimirEn("Mi impresora");
if (respuestaAlImprimir === true) {
    console.log("Impreso correctamente");
} else {
    console.log("Error. La respuesta es: " + respuestaAlImprimir);
}

Encadenando métodos usando promesas:

new ConectorPlugin()
  .texto("Hola mundo\n")
  .imprimirEn("Mi impresora")
  .then(respuestaAlImprimir => {
      if (respuestaAlImprimir === true) {
          console.log("Impreso correctamente");
      } else {
          console.log("Error. La respuesta es: " + respuestaAlImprimir);
      }
  });

O encadenando métodos usando await:

// Recuerda que debes estar dentro de una función async para usar await
const respuestaAlImprimir = await new ConectorPlugin()
.texto("Hola mundo\n")
.imprimirEn("Mi impresora");
if (respuestaAlImprimir === true) {
    console.log("Impreso correctamente");
} else {
    console.log("Error. La respuesta es: " + respuestaAlImprimir);
}

Los 4 fragmentos de código hacen lo mismo, usa el que prefieras.

Documentación de la clase

Puedes encontrar toda la documentación y métodos en este enlace.

El log

Existe un archivo en donde se van a registrar todos los sucesos que ocurran con el plugin, así que recuerda que el archivo log es tu amigo y debes consultarlo siempre que ocurra algo inesperado.

Este log se va a encontrar en el mismo directorio que el plugin, y se ve algo así:

2021/02/08 20:58:44.394429 Plugin para comunicación con impresoras térmicas 
Proudly brought to you by Parzibyte
==========================================
	https://parzibyte.me/blog
==========================================
Entorno: Desarrollo
2021/02/08 20:58:44.394429 Escuchando en el puerto :8000.
2021/02/08 20:58:49.209879 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 20:59:01.402628 error de servidor. El mensaje es: la imagen 'C:\Users\Luis Cabrera Benito\Desktop\hollow_kinght.jpg' no existe o no es legible
2021/02/08 20:59:09.409349 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:01:40.885311 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:06:19.735654 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:06:56.311107 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:06:56.336113 error de servidor. El mensaje es: open \\DESKTOP-asdfg\OneNote for Windows 10: No se encuentra el nombre de red especificado.
2021/02/08 21:06:59.013530 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:23:33.672540 error de servidor. El mensaje es: la imagen 'https://github.com/parzibyte.png' no existe o no es legible
2021/02/08 21:23:44.452358 Advertencia: el servidor indica que si bien la clave API existe, la misma no es válida. Esto no es un problema si solo se está usando la versión de prueba, pero si usted cuenta con la clave API recuerde colocarla sin espacios ni caracteres adicionales dentro del archivo api_key.txt
2021/02/08 21:31:21.635508 Plugin para comunicación con impresoras térmicas 
Proudly brought to you by Parzibyte
==========================================
	https://parzibyte.me/blog
==========================================
Entorno: Producción
2021/02/08 21:31:21.635508 Escuchando en el puerto :8000.
2021/02/08 21:31:39.619666 error de servidor. El mensaje es: error haciendo petición al servidor. Por favor, reporte el problema e intente más tarde
2021/02/08 21:32:16.006801 Plugin para comunicación con impresoras térmicas 
Proudly brought to you by Parzibyte
==========================================
	https://parzibyte.me/blog
==========================================
Entorno: Producción
2021/02/08 21:32:16.006801 Escuchando en el puerto :8000.

No pasa nada si eliminas el archivo, pero recuerda que es importante leerlo si tienes errores. El plugin va a crear este log cada mes.

Distribuyendo plugin

Puedes instalar el plugin en las computadoras que quieras. Por cierto, si contrataste un plan también debes colocar el archivo api_key.txt junto con el plugin.

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.

14 comentarios en “Instalación y uso del plugin para impresoras térmicas V2”

  1. Juan David Rincon

    Holaaa gracias por tu respuesta anterior, estuve haciendo unas pruebas en local y no me funciona el abrirCajon, cortar y cortarParcialmente, sabes a que se debe o que me puede faltar?

    Realice pruebas con solo cortar, solo cortarParciamente y usando ambos pero en ningún caso corta el papel.

  2. Pana, pero usted no tendrá una lista de los errores con sus soluciones en su blog o repo del plugin, que me guía: Hasta ahora tengo el siguiente error:
    2021/11/09 13:07:45.569836 error de servidor. El mensaje es: open \\JoseCarlos\Generic: The network name cannot be found.

    Lo saque del log de errores junto al plugin
    Gracias

    1. No hay necesidad, ya que los errores son claros. Por ejemplo, en el de usted le dice que la impresora no se puede encontrar. Seguramente olvidó compartirla (y en esos casos, cuando el usuario no lee lo que debe hacer, una lista de errores no ayuda en nada)
      Saludos!

  3. Felicitaciones por tu desarrollo, he estado mirando la librería original en csharp pero vaya que toma tiempo ajustarla, por ahora creo que voy a probar el tuyo aunque la verdad no encuentro desde donde descargarlo… estoy ciego? no veo el link!

    1. Gracias por el link, te cuento que estuve intentando probar pero sin éxito, tengo este error: Error. La respuesta es: Error en el servidor: json: cannot unmarshal object into Go value of type []main.OperacionTicket

  4. Obtengo la respuesta “Impreso correctamente”, pero no imprime nada ni hace ninguna acción la impresora (Zendio). Intenté con otra (XP-POS) e imprime bien.
    A qué se debe?

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *