已经实现的功能
ESC/POS
指令编码(支持文本、二维码、图片行打)
打印功能已经在串口热敏打印机上测试,蓝牙、局域网打印因为没有设备,打印效果未知,欢迎有条件的老哥测试。
- 模版开发
- 开发人员调试好文档格式,生成打印模版
- 打印模版保存到数据库或者打包为服务端资源
- 指令下发
- 业务操作产生打印需求,后端将业务数据+打印模版进行处理,生成打印指令,下发给前端
- 前端负责打开打印机设备,然后将指令发送到打印机
备注
一般情况下,打印模版并不会频繁改变,因此不需要开发可视化的模版制作功能,由技术人员完成模版调试即可
如果需要用到的模版较多,可能需要开发模版管理功能,方便上传、更新打印模版。
maven 坐标
<dependency>
<groupId>com.power4j.kit</groupId>
<artifactId>esc-pos</artifactId>
<version>最新版本</version>
</dependency>
// json是事先定义好的打印模版
Doc doc = DocProcessor.parseFromJson(jsonStr);
// hexCmd 为打印指令,16进制格式,一般厂商会提供测试工具,粘贴进去就能打印
// 也可以通过网络或者蓝牙传输打印指令
String hexCmd = DocProcessor.getCmdEncoder().encodeHex(doc);
例子 : 见 DefaultCmdEncoderTest
一个模版文档Doc
由若干行组成,格式如下
{
"charsetName": "GB2312",
"opt": {},
"lines": []
}
charsetName
字符集
opt
默认文本格式
lines
数组类型,需要打印的行
文档以行的方式定义其打印内容,格式如下
{
"type": "text",
"data": "hello",
"opt": {}
}
type
表示类型,有三种
text
文本bmp
位图qrc
二维码feed
控制指令,走纸cut
控制指令,切纸
data
需要打印的数据,不同的类型有不同的要求
- 文本 、 二维码:传入需要打印的文本
- 位图:图片数据(base64)
- 走纸: 数字,表示走纸的行数
- 切纸: 0 表示部分切纸,1表示全切
opt
打印选项,用于设置打印格式等,不同的类型,支持不同的选项,见后面打印格式说明。需要设置格式时传入,否则使用默认格式。
- 走纸(
Feed
): 控制打印机走纸 - 切纸(
Cut
): 控制打印机切纸,支持全切和部分切纸
通用格式作用于任何的类型的行。
属性名称 | 属性值 | 备注 |
---|---|---|
align |
left,center,right |
左、中、右 |
属性名称 | 属性值 | 备注 |
---|---|---|
fontHeight |
1,2,3,4,5,6,7,8 |
字体高度,以倍数表示 |
fontWidth |
1,2,3,4,5,6,7,8 |
字体宽度,以倍数表示 |
fontType |
a,b,c |
打印机提供的三种字体 |
underline |
none,one-dot,two-dot |
下划线类型 |
lineSpacing |
数字 | 行距 |
bold |
true,false |
加粗 |
color |
white,black |
颜色模式,white 表示白底黑字,black 表示黑底白字 |
一个文本行的例子
{
"type": "text",
"data": "凭 条",
"opt": {
"fontHeight": "3",
"fontWidth": "3",
"bold": "true",
"align": "center",
"underline": "none"
}
}
- 二维码模型(
QrModel
): 可选择打印机内置二维码模型 - 纠错等级(
QrEccLevel
): 4种纠错等级 - 大小: 可设置二维码的大小
属性名称 | 属性值 | 备注 |
---|---|---|
model |
m1,m2 |
类型 |
level |
l,m,q,h |
纠错等级 |
size |
数值 | 二维码的大小 |
一个二维码行的例子
{
"type": "qrc",
"data": "12345678",
"opt": {
"size": "10",
"align": "center"
}
}
- 模式(
BmpModel
): 位图在打印机缓存中的存储模式
属性名称 | 属性值 | 备注 |
---|---|---|
model |
m0,m1,m32,m33 |
分别表示:8点单密度、8点双密度、24点单密度、24点双密度 |
一个二维码行的例子
{
"type": "bmp",
"data": "此处填写base64图片数据",
"opt": {
"size": "10",
"model": "m33"
}
}