本帖最后由 willning 于 2024-3-18 17:45 编辑
使用蓝牙打印机来打印小票或者标签,最高效率的方式什么?
一、了解ESC协议
ESC协议是EPSON公司开发的一种打印机通用协议,最初用于对点阵打印机进行控制和管理。该协议具有简单易用、兼容性好、速度快等特点。随着微型热敏打印机的推广,这种高效率的打印协议被广泛用于热敏式打印机,特别是便携式的标签或单据打印机,到现在已经成为了事实上的行业标准。
需要注意的是,部分新款的热敏打印机同时支持多个协议,您需要在开始动手前,在菜单中确认当前是否已使用ESC协议。
二、操作支持ESC协议的打印机
为了便于低代码开发,活字格安卓容器HAC 1.16.0中封装了ESC指令,您只需要调用PDA(Android)交互插件中“执行蓝牙打印任务(ESC通用版)”命令,就可以让ESC协议的打印打印出您希望的内容了。
参数如下:
- mac地址:已经在PDA上完成配对的蓝牙打印机的mac地址,仅需要配对无需手动连接(您可以通过 获取蓝牙打印机设备列表(ESC通用版)命令,读取当前PDA已经配对的所有蓝牙打印机信息,包含名称和mac地址,考虑到性能问题,强烈建议您将mac地址保存到数据库中,而不是在每次打印时临时读取和选择)
- 纸张宽度:部分打印机支持不同的纸卷,有一些可以撑满纸仓有一些仅占用最左侧的一部分。为了正确的输出打印结果,请手工测量纸卷的尺寸,将mm单位的宽度填写到这里
- 打印机DPI:大部分打印机是203也有部分打印机会提供更高的dpi,具体参数请参考打印机说明书
- 每行字数:大部分打印机是32,具体参数请参考打印机说明书
- 需打印的文字模板:提前组织好用于打印的“文字模板”
因为HAC采用原生指令的方式打印,速度更快,但也存在一些功能限制:
- 打印按照行来进行,不支持在同一行内放置不同类型的内容(如左侧二维码右侧文字)
- 使用活字格设计时需要单独设计打印样式,而不是直接打印页面的部分区域
- 调用一次打印命令即完成一次打印,如果需要一次打印多张标签,推荐在开发阶段使用循环的方式多次调用(如在循环中使用REPLACE函数处理打印模板,实现批量打印的效果),而不是拼接成一个过大的文字模板,最终导致打印机内存溢出导致错误
三、理解“文字模板”
HAC中引入了Github上热门类库“ESCPOS-ThermalPrinter-Android”的文字模板定义,点击查看详细文档
这是一个作为示例的文字模板:
[C]<img>15A02000012C101.........001F</img>
[L]
[C]<u><font size='big'>ORDER N°045</font></u>
[L]
[C]================================
[L]
[L]<b>BEAUTIFUL SHIRT</b>[R]9.99e
[L] + Size : S
[L]
[L]<b>AWESOME HAT</b>[R]24.99e
[L] + Size : 57/58
[L]
[C]--------------------------------
[R]TOTAL PRICE :[R]34.98e
[R]TAX :[R]4.23e
[L]
[C]================================
[L]
[L]<font size='tall'>Customer :</font>
[L]Raymond DUPONT
[L]5 rue des girafes
[L]31547 PERPETES
[L]Tel : +33801201456
[L]
[C]<barcode type='ean13' height='10'>831254784551</barcode>
[C]<qrcode size='20'>https://www.grapecity.com.cn/</qrcode>
打印效果如下图:
在实际开发中,有如下技巧需要您来关注:
- 模板中的每一行,对应打印出来的一行
- 除文字外的其他元素(图片、条码、二维码),必须独占一行;文字可以在在一行中放置两个,分别居左和居中对齐
- 图片仅支持低分辨率的位图(将文件的二进制转为byte数组,再拼接位十六位字符串即可),建议保存在数据库中,随打印取用
四、其他方案
|
|