此项目是使用的汉印HM-A400蓝牙打印机,在此过程中整理并总结了一些经验。
此链接为汉印HM-A400蓝牙打印官方给的微信小程序demo:https://gitee.com/harlinmin/hanyin-hm-400-bluetooth-print-demo.git
经验一:
此款标签打印机支持的打印语言为cpcl、esc、tspl,此案例中我使用的是cpcl语言,要具体打印动态内容我写在一个js函数里,cpcl语法规则具体参考:https://gitee.com/harlinmin/cpcl-print.git
let printStyle = '! 0 200 200 640 1\r\n' +
'PW 1000\r\n' +
'SETMAG 1 1\r\n' +
'TEXT 7 0 20 60 交易类型: ' + searchDetail.type + '\r\n' +
'TEXT 7 0 20 90 门店名称: ' + searchDetail.store_name + '\r\n' +
'TEXT 7 0 20 120 时间日期: ' + searchDetail.active_time + '\r\n' +
'TEXT 7 0 20 150 交易人员: ' + searchDetail.operator_name + '\r\n\r\n' +
'TEXT 7 0 20 180 金额总计: ' + strTotalMoney + '\r\n' +
'TEXT 7 0 20 210 序号 ' + '产品 ' + '批次 ' + '数量 ' + '单价 ' + '\r\n' +
productList + '\r\n' +
'PRINT\r\n'
但是此项目客户有个需求就是需要在标签纸上打印出多个这样的列表内容,经过我反复尝试,无法将宽度、高度作为动态变量来计算,如果这样做,打印出来的就会是乱码,经过咨询汉印官方技术后,只能采用穷举的方式,
import checkTEXT from './checkTEXT.js'
// “门店交易” 打印的标签样式
function dealStyle(searchDetail) {
// 扫码列表
let productList = ''
let totalMoney = 0
for (let i = 0; i < searchDetail.lines.length; i++) {
let order = dealTEXT[i].first + String(i + 1) + '\r\n'
let product = dealTEXT[i].second + searchDetail.lines[i].product + '\r\n'
let batch = dealTEXT[i].third + searchDetail.lines[i].batch + '\r\n'
let qty = dealTEXT[i].fourth + String(searchDetail.lines[i].qty) + '\r\n'
let price = dealTEXT[i].fifth + String(searchDetail.lines[i].price) + '\r\n'
productList += order + product + batch + qty + price
totalMoney += (Number(searchDetail.lines[i].price) * Number(searchDetail.lines[i].qty))
}
let strTotalMoney = String(totalMoney)
let printStyle = '! 0 200 200 640 1\r\n' +
'PW 1000\r\n' +
'SETMAG 1 1\r\n' +
'TEXT 7 0 20 60 交易类型: ' + searchDetail.type + '\r\n' +
'TEXT 7 0 20 90 门店名称: ' + searchDetail.store_name + '\r\n' +
'TEXT 7 0 20 120 时间日期: ' + searchDetail.active_time + '\r\n' +
'TEXT 7 0 20 150 交易人员: ' + searchDetail.operator_name + '\r\n\r\n' +
'TEXT 7 0 20 180 金额总计: ' + strTotalMoney + '\r\n' +
'TEXT 7 0 20 210 序号 ' + '产品 ' + '批次 ' + '数量 ' + '单价 ' + '\r\n' +
productList + '\r\n' +
'PRINT\r\n'
return printStyle
}
checkTEXT.js文件,
exports.dealTEXT = [{
first: 'TEXT 7 0 20 210 ',
second: 'TEXT 7 0 120 210 ',
third: 'TEXT 7 0 260 210 ',
fourth: 'TEXT 7 0 410 210 ',
fifth: 'TEXT 7 0 500 210 '
},
{
first: 'TEXT 7 0 20 240 ',
second: 'TEXT 7 0 120 240 ',
third: 'TEXT 7 0 260 240 ',
fourth: 'TEXT 7 0 410 240 ',
fifth: 'TEXT 7 0 500 240 '
},
{
first: 'TEXT 7 0 20 270 ',
second: 'TEXT 7 0 120 270 ',
third: 'TEXT 7 0 260 270 ',
fourth: 'TEXT 7 0 410 270 ',
fifth: 'TEXT 7 0 500 270 '
},
{
first: 'TEXT 7 0 20 300 ',
second: 'TEXT 7 0 120 300 ',
third: 'TEXT 7 0 260 300 ',
fourth: 'TEXT 7 0 410 300 ',
fifth: 'TEXT 7 0 500 300 '
}]
经验二:
之后我们改变策列直接将要打印的内容生成图片,小程序选择其他应用打开,选择汉印App直接打印就行(如果打印没有反应,可以升级打印机固件到最新版解决)。