我能够将原始的ZPL命令从PHP直接打印到打印机,除了Windows在TLP 2844-Z打印机上将Windows更新到Windows-10之后以及我第一次安装WebClientPrint Processor时一次不能打印多个标签。(WCPP)在Windows-10中。当我尝试在ZPL打印机应用程序中模拟ZPL打印机时,它也发生了。唯一的例外是,当我在Mac Safari浏览器上尝试此操作时,它运行良好。
工作请求脚本(仍在Safari中运行,并且以前在所有其他浏览器中运行):
for(var i=0; i<rows.length; i++){
javascript:jsWebClientPrint.print('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '¶m=' + rows[i].value);
}
阻止我的是允许询问:
在Chrome上生成请求的时间不多(在Safari上不是问题)。
它只请求一次许可,结果(仅打印1个标签):
应该是什么时候(打印了2个标签):
我可以使用以下脚本重现以上内容:
for (var i = 0; i < rows.length; i++) {
var url = ('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '¶m=' + 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() + '¶m=' + rows[i].value);
}
用于延迟请求并在单独的选项卡上发出每个请求的单独函数,并在执行该选项卡后将其关闭:
function delayPrint(data, interval) {
setTimeout(function() {
var wnd = window.open('webclientprint:' + domain + ('useDefaultPrinter=' + $('#useDefaultPrinter').attr('checked') + '&printerName=' + $('#installedPrinterName').val() + '¶m=' + rows[i].value));
setTimeout(function() {
wnd.close(); // close once it's done
}, 1000);
}, interval * 3000);
}