es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Imprimir etiquetas ZPL con Javascript

Estoy utilizando este ejemplo para imprimir etiquetas:
https://www.neodynamic.com/articles/How-to-print-raw-Zebra-ZPL-commands-from-Javascript/
todo funciona bien, excepto que si quiero imprimir más de una etiqueta por clic, no me permite hacerlo. Por ejemplo, si uso un ciclo for o while para imprimir, pero cada vez que el ciclo avanza, aparece la alerta que dice “Imprimir ahora”.
Así es como se ve la última parte en mi código:
n = 0;

while (n < 2) {
n++;

var cmds = “^XA”;

cmds += “^FO480,21^ARN,1,90^FD/^FS”;
cmds += “^FO62,36^AUN,90,100^FDEL ZAPATON^FS”;
cmds += “^FO0,135^ARN,60,14^FDDama 4^FS”;
cmds += “^FO0,200^ARN,60,40^FD^FS”;
cmds += “^BY2,2,100”;
cmds += “^FO10,270^BC^FDE0430601926027^FS”;
cmds += “^FO410,273^AUN,100,75^FD$350.50^FS”;
cmds += “^FO50,20^GB530,120,6,B,0”;

cmds += “^XZ”;
cpj.printerCommands = cmds;

//Enviar impresión a la impresora Zebra
cpj.sendToClient()
};

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Problema con la impresión de múltiples etiquetas usando ZPL y Javascript

    Como experto en tecnología de la información especializado en Javascript, HTML y ZPL, un usuario enfrenta un problema al trabajar con el ejemplo proporcionado en el enlace https://www.neodynamic.com/articles/How-to-print-raw-Zebra-ZPL-commands-from-Javascript/. El código funciona correctamente para imprimir una etiqueta, pero el usuario no puede imprimir más de una etiqueta. El problema ocurre cuando el usuario intenta utilizar un bucle (por ejemplo, for, while) para imprimir más de una etiqueta con un solo clic.

    El usuario ha compartido un fragmento de código relevante que demuestra el problema. En el código, el usuario utiliza un bucle while y para cada iteración, los comandos ZPL para imprimir una etiqueta se asignan a la variable “cmds”. Después de eso, los comandos ZPL se envían a la impresora utilizando la función cpj.sendtoClient(). Sin embargo, cada vez que el bucle pasa a la siguiente iteración, aparece un mensaje de alerta que interrumpe el proceso de impresión.

    Para solucionar este problema, el usuario necesita eliminar el mensaje de alerta del bucle eliminando la línea de código alert("Print now") de la función cpj.onReady(). La función cpj.onReady() se llama después de la función cpj.sendToClient(), que es responsable de enviar los comandos ZPL a la impresora. La función alert("Print now") se utiliza para indicar al usuario que realice una acción una vez que se haya completado el proceso de impresión de la etiqueta. Sin embargo, en este caso, el usuario desea imprimir múltiples etiquetas sin interrupciones, por lo que eliminar el mensaje de alerta solucionará el problema.

    El fragmento de código modificado sin el mensaje de alerta se vería así:

    n = 0;
    while (n < 2) {
      n++;
    
      var cmds = "^XA";
      cmds += "^FO480,21^ARN,1,90^FD/^FS";
      cmds += "^FO62,36^AUN,90,100^FDEL ZAPATON^FS";
      cmds += "^FO0,135^ARN,60,14^FDDama 4^FS";
      cmds += "^FO0,200^ARN,60,40^FD^FS";
      cmds += "^BY2,2,100";
      cmds += "^FO10,270^BC^FDE0430601926027^FS";
      cmds += "^FO410,273^AUN,100,75^FD$350.50^FS";
      cmds += "^FO50,20^GB530,120,6,B,0";
      cmds += "^XZ";
    
      cpj.printerCommands = cmds;
      cpj.sendToClient();
    }
    

    Al eliminar el mensaje de alerta, el usuario puede imprimir múltiples etiquetas sin interrupciones ni indicaciones.

Comments are closed.