willning 发表于 2024-3-18 17:39:17

一看就会,超有用活字格技能:一百九十六、如何在HAC上使用ESC协议的蓝牙打印机

本帖最后由 willning 于 2024-3-18 17:45 编辑

使用蓝牙打印机来打印小票或者标签,最高效率的方式什么?
https://hac.app.hzgcloud.cn/upload/FileDownloadUpload/Download?file=10f6b5d2-26df-4ae0-8deb-7314f1c9b844_ESC%E6%89%93%E5%8D%B0.mp4
一、了解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”的文字模板定义,点击查看详细文档
这是一个作为示例的文字模板:
<img>15A02000012C101.........001F</img>

<u><font size='big'>ORDER N°045</font></u>

================================

<b>BEAUTIFUL SHIRT</b>9.99e
+ Size : S

<b>AWESOME HAT</b>24.99e
+ Size : 57/58

--------------------------------
TOTAL PRICE :34.98e
TAX :4.23e

================================

<font size='tall'>Customer :</font>
Raymond DUPONT
5 rue des girafes
31547 PERPETES
Tel : +33801201456

<barcode type='ean13' height='10'>831254784551</barcode>
<qrcode size='20'>https://www.grapecity.com.cn/</qrcode>

打印效果如下图:


在实际开发中,有如下技巧需要您来关注:

[*]模板中的每一行,对应打印出来的一行
[*]除文字外的其他元素(图片、条码、二维码),必须独占一行;文字可以在在一行中放置两个,分别居左和居中对齐
[*]图片仅支持低分辨率的位图(将文件的二进制转为byte数组,再拼接位十六位字符串即可),建议保存在数据库中,随打印取用


四、其他方案

[*]德佟打印机或OEM一体机的定制方案

页: [1]
查看完整版本: 一看就会,超有用活字格技能:一百九十六、如何在HAC上使用ESC协议的蓝牙打印机