Java实现POS打印机自定义无驱打印
Java实现POS打印机自定义无驱打印
热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案
• 打印模板
为了增强打印效果的通用性,因此需要提供多元化的模板对齐支持,而且不同大小的打印机所需的版式也不尽相同
模板采用Json格式存储,分为header、goods、bill、footer四个部分,对模板的解析采用号称史上最快的阿里出品的fastjson
模板示例
{
"header": [
{
"text": "{$shopname}",
"size": 2,
"bold": true,
"format": 1,
"line": 2,
"underline": true,
"type": 0
},
{
"text": "{$barCode}",
"format": 1,
"line": 2,
"type": 1
},
{
"path": "{$logo}",
"format": 1,
"line": 2,
"type": 3
},
{
"text": "{$qrCode}",
"format": 1,
"line": 2,
"type": 2
}
],
"goods": [
{
"name": "商品名",
"width": 24,
"format": 0,
"variable": "name"
},
{
"name": "数量",
"width": 8,
"format": 1,
"variable": "num"
},
{
"name": "单价",
"width": 8,
"format": 1,
"variable": "price"
},
{
"name": "金额",
"width": 8,
"format": 2,
"variable": "pay"
}
],
"bill": [
{
"text": "实收现金",
"size": 3,
"bold": true,
"format": 1,
"line": 2,
"underline": false,
"type": 0
},
{
"text": "{$cash}",
"size": 3,
"bold": true,
"format": 1,
"line": 2,
"underline": false,
"type": 0
}
],
"footer": [
{
"text": "详情请访问官网",
"size