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
- Instala y comparte tu impresora, puede ser genérica o con sus controladores; y colócale un nombre sin espacios ni caracteres especiales.
- Desde el panel de control imprime una página de prueba en la impresora y verifica que la misma sea impresa correctamente.
- 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.
- 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.
- Al presionar el botón, debe imprimirse un ticket parecido al siguiente:
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:
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í:
Ahora puedes comenzar a imprimir tickets. La sintaxis es:
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í:
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.
Recuerda que igualmente puedes usar async y await. El código anterior quedaría así:
En el ejemplo vas a entenderlo de mejor manera.
Ejemplo simple de impresión de ticket
El ejemplo más simple queda así:
También puede ser con await
:
Encadenando métodos usando promesas:
O encadenando métodos usando await
:
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í:
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.
14 Comentarios
ARTURO · junio 12, 2022 a las 6:32 pm
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?
parzibyte · junio 12, 2022 a las 6:53 pm
https://parzibyte.me/blog/2021/02/09/planes-plugin-impresora-termica-v2/
Juan David Rincon · marzo 14, 2022 a las 9:50 pm
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.
Juan David Rincon · marzo 9, 2022 a las 7:42 pm
Disculpa te ha aparecido error en CORS? Como lo solucionaste?
parzibyte · marzo 9, 2022 a las 7:51 pm
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/
jose · diciembre 27, 2021 a las 12:57 pm
como puedo incluir tu plugin en angular
Jose · noviembre 9, 2021 a las 12:12 pm
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
parzibyte · noviembre 9, 2021 a las 12:35 pm
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!
Juan Arcila · octubre 13, 2021 a las 8:59 am
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!
parzibyte · octubre 13, 2021 a las 9:29 am
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
Juan Arcila · octubre 13, 2021 a las 2:43 pm
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
parzibyte · octubre 13, 2021 a las 3:42 pm
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.
Eloy · octubre 6, 2021 a las 2:36 am
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?
parzibyte · octubre 6, 2021 a las 9:18 am
La otra impresora no es compatible