条形码打印的数量没有要求那么多

Barcode wasn't printed as many as the Request

我可以 print raw ZPL commands from PHP directly to the printer, except that I can't print more than 1 label at once after update to on the TLP 2844-Z printer and my first time when installing WebClientPrint Processor (WCPP) in . When I was trying to in the ZPL Printer app it also happened. The only exception was when I try this on the Safari 浏览器,它运行良好。


工作请求脚本(仍在 Safari 中工作,之前在所有其他浏览器中工作):

for(var i=0; i<rows.length; i++){
     javascript:jsWebClientPrint.print('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&param=' + rows[i].value);
}

阻止我的是权限请求:

在 Chrome 上生成的次数不如请求生成的次数多(这不是 Safari 上的问题)。


请求为 2 时的示例:

它只要求 permission 一次,结果(只打印了 1 个标签):

应该是什么时候(打印 2 个标签):

我能够使用以下脚本重现上述内容:

for (var i = 0; i < rows.length; i++) {
  var url = ('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&param=' + rows[i].value);
  window.open('webclientprint:' + domain + url);
}

这并不理想,因为生成的许多选项卡仅用于打印,而以前您不需要任何新选项卡即可执行相同操作。


知道如何解决这个问题吗?这样它就可以按照要求打印多少?

我解决这个问题的方法是在单独的选项卡上发出每个请求,并在执行后关闭选项卡。为了简单起见,我把它做成一个单独的函数。

请求脚本变为:

for (var i = 0; i < rows.length; i++) {
  if (i > 0)
    delayPrint(rows[i], i); // separate function
  else
    javascript: jsWebClientPrint.print('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&param=' + rows[i].value);
}

单独的函数用于延迟请求并在单独的选项卡上发出每个请求并在执行后关闭选项卡:

function delayPrint(data, interval) {
  setTimeout(function() {
    var wnd =   window.open('webclientprint:' + domain + ('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '&param=' + rows[i].value));
    setTimeout(function() {
      wnd.close(); // close once it's done
    }, 1000);
  }, interval * 3000);
}