pos-printer-api(票据打印机驱动接口)中规范了常用的票据格式和标准的连接接口,以达到无限匹配新打印机硬件的目的。票据打印机驱动接口,适合通过卷装纸输出的热敏和针式打印机。
API的核心由打印元素、控制转义、连接接口和设备设置这4部分构成。
票据打印机的生产厂商应该实现这套标准定义,降低打印机接入软件体系的技术成本,提升产品竞争力;开发爱好者或使用打印机的开发者们共同实现并开放驱动源码,互相帮助。
建议驱动开发者细致阅读本文
能被打印机输出的几大关键元素,其中包括文本类型、图片类型和控制类型。
文本是票据打印机需要支持的最基本输出元素,分别如下:
普通的段落型文本,输出后自动换到新行,类型于html中的div标签。Section由以下几个元素构成:
段落中的文字都由这些文本构成,每个Text中又包含Font元素,用于控制字体。
在所有需要字体控制的元素中都将使用到这个元素。其中包含如下属性:
- fontSize 字体大小:Big、Normal和Small,分别对应:大、中和小三种尺寸
- bold 是否粗体:true|false
- underline 是否下划线:true|false
- Left 居左
- Center 居中
- Right 居右
下面是各种排列示例
|align left |
| align center |
| align right|
表格包含如下几个属性
- headers 表头名称
- columnWidths 列宽:每个单元格的宽度(字符数),中文算两个,英文算一个,但所有宽度之和不能大于列可输出的字数
- alignRights 列居右:设备每列的文字排列方式是否居右
LINE_ROW 横线行,在表格中追加一条横线
示例:
|NAME COUNT PRICE AMOUNT|
---------------------------------------
|apple 2 6.00 12.00|
|cherry 4 30.00 120.00|
|banana 5 8.00 40.00|
---------------------------------------
|SUM 172.00|
打印key=value型的文档,有紧凑和分离两种排列方式。
紧凑型排列方式:
|name: yaoming |
|address: BeiJing chaoyang anli road |
| 118 build |
分离型排列方式:
|name: yaoming|
|address: BeiJing chaoyang anli road|
| 118 build|
很多POS打印机支持图片格式的输出,但并不支持横线、条形码或二维码输出,所以我们设计了以下元素,由驱动实现,以减小使用者的开发难度。
普通的bitmap格式编码的图片。
- margin 上下文间距(像素)
- width 图片宽度(素数)
- height 图片高度(像素)
- pixels 图片的点阵数据
居中输出,输出完成后自动换新行。
| |
| +++++++++++++++++++ |
| + + |
| + Image content + |
| + + |
| +++++++++++++++++++ |
| |
居中输出,输出完成后自动换新行。
特别提醒:如果打印机不支持图片类型,那么可以用文本的方式实现横线。
| |
------------------------------------
| |
- content 条码内容
- margin 条码与上下文之间的间距(像素)
- height 条码的高度(像素)
居中输出,输出完成后自动换新行。
| |
| || ||||| | || ||| | |
| |
- margin 上下文间距(像素)
- content 内容
- width 宽度(像素)
居中输出,输出完成后自动换新行。
| |
| +++++++++++++++++++ |
| + + |
| + QRcode content + |
| + + |
| +++++++++++++++++++ |
| |
输出一个空行,相当于向前走纸一行。
部分打印机有切纸功能,如果没有建议走纸到切纸位置并呜音。
控制转义是指将打印元素转换成打印机识别的byte[]类型的过程。
继承Converter类,实现toBytes(DeviceSetting deviceSetting)方法即可实现控制转义。
因为不同的打印机有不同的连接方式,如:蓝牙、usb、wifi或串口,所以驱动需要实现不同的打印机的不同的接入方式。
实现Connection接口,或继承OWConnection(只写连接)类。
针对打印机的不同的可配置需求:
驱动开发者可以使用DeviceSetting.getString(key)取得使用者传入的参数
驱动使用者在加载驱动的时候使用标准的http_query_string格式传入参数即可。