使用JavaScript打印ZPL标签时批量打印重复弹出提示问题
解决方案
你遇到的重复弹窗问题核心原因是每次循环都调用了cpj.sendToClient(),该方法每触发一次就会弹出一次打印确认框,调整方案如下:
ZPL 语法本身支持多标签指令拼接,每个独立标签以^XA开头、^XZ结尾,你只需要把所有需要打印的标签指令全部拼接到同一个命令字符串中,最后仅调用一次打印接口,就只会弹出一次确认框,完成批量打印。
修改后的代码示例:
// 定义需要打印的总张数 const printCount = 2; let allCmds = ''; // 循环拼接所有标签的ZPL指令 for (let n = 0; n < printCount; n++) { // 单张标签的ZPL指令 let singleLabelCmds = "^XA"; singleLabelCmds += "^FO480,21^ARN,1,90^FD/^FS"; singleLabelCmds += "^FO62,36^AUN,90,100^FDEL ZAPATON^FS"; singleLabelCmds += "^FO0,135^ARN,60,14^FDDama 4^FS"; singleLabelCmds += "^FO0,200^ARN,60,40^FD^FS"; singleLabelCmds += "^BY2,2,100"; singleLabelCmds += "^FO10,270^BC^FDE0430601926027^FS"; singleLabelCmds += "^FO410,273^AUN,100,75^FD$350.50^FS"; singleLabelCmds += "^FO50,20^GB530,120,6,B,0"; singleLabelCmds += "^XZ"; // 拼到总命令串里 allCmds += singleLabelCmds; } // 仅调用一次打印接口 cpj.printerCommands = allCmds; cpj.sendToClient();
如果每张标签的内容有差异,只需要在循环内对应修改单张标签的动态字段即可,无需调整整体逻辑。
内容的提问来源于stack exchange,提问作者user17608147
相关产品推荐
相关产品推荐

