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.
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.
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.
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.
Puedes encontrar toda la documentación y métodos en este enlace.
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.
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.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.
Ver comentarios
Hola, pude hacer una prueba y si pude imprimir, pero aun me aparece el pie de pagina de tu blog, eso lo configuro en donde?
https://parzibyte.me/blog/2021/02/09/planes-plugin-impresora-termica-v2/
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.
Disculpa te ha aparecido error en CORS? Como lo solucionaste?
Hola. Tal vez es por esto: https://parzibyte.me/blog/2021/10/01/the-request-client-is-not-a-secure-context-and-the-resource-is-in-more-private-address-space-local/
como puedo incluir tu plugin en angular
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
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!
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!
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
Seguramente está usando una versión del conector distinta. Para la versión 2 debe usar el conector JavaScript v2, y lo mismo para la versión 1.
Ya he arreglado el post, gracias por avisarme. Igualmente le dejo el enlace por aquí: https://github.com/parzibyte/ejemplos-plugin-impresoras-termicas-v2/releases/tag/1.0
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?
La otra impresora no es compatible