常见的三总打印指令有

  1. tspl 贴码打印机 对应tscjs

  2. esc 热敏纸长条打印 对应escjs

  3. cpcl 快递贴码

在贴码打印机中常用佳博的 tscjs 打印二维码一般没问题

这次遇到得了 得力的750W打印机 二维码能正常打印但是扫不出来

其实可以说明 得力的750W是适用tspl指令的

方案一 (放弃)

灵感来源于 多多买菜

在面对不同标签大小,输出的内容排版能够等比例缩放,想到tscjs中可以打印图片

但是打印的图片需要通过canvas输出 canvasGetImageData 获取数据流

最后实现方案是设置canvas背景为白色提前生成好内容 二维码。

放弃原因

  1. 生产的canvas数据过大,每一个像素点的颜色都调整,虽然纸是60*40 80*60mm 但是实际上输出的像素点确实上万个

  2. 画布大小和实际打印需要的大小难以匹配

方案二

在否定了第一个方案后,开始研究原始的指令

"QRCODE " + x + "," + y + "," + level + "," + width + "," + mode + "," + 0 + ",\"" + content +"\"\r\n"

将每一个参数修改后还是无法实现扫码,接着到插件市场一个一个插件的尝试,发现其实都一样,但是有的插件中附带文档

最最后快要放弃的时候,打开了文档一个一个参数的看

皇天不负苦心人,最后试了手动模式 发现原来在代码中修改模式,没有传入参数,所以导致手动模式未生效

最后修改代码成

jpPrinter.setQrcode = function(x, y, level, width, mode, content) {
		if(mode === 'A') {
			data = "QRCODE " + x + "," + y + "," + level + "," + width + "," + mode + "," + 0 + ",\"" + content +"\"\r\n"
		} else {
			data = "QRCODE " + x + "," + y + "," + level + "," + width + ",M," + 0 + ",M1,S1,\"" + content +"\"\r\n"
		}
      jpPrinter.addCommand(data)
    };

实现打印

成功!