最近接到一个客户需求,需要使用一个标签打印服务,需要在手机上操作,所以不能用厂家的驱动。之前没接触过打印命令,见过商用打印机命令中常用的esc/pos,挺头疼的。cpcl比较好,不过也需要重新研究一下。
一开始已经有微信小程序的应用了,所以打算用蓝牙打印。微信小程序目前只支持低能耗蓝牙(BLE)。微信的文档已经很详细了,就不再赘述了。
微信使用蓝牙最大的问题是低功耗蓝牙,安卓设备可以调用wx.协商MTU,但苹果只能以20字节为单位传输,也就是只有2kb/s,当内容包含图片时,打印速度太慢。而且微信小程序为何需要位置权限?(浓雾)。
基于以上原因,蓝牙打印方式就放弃了。后来接触到了的云打印机,支持的接口类型比较多,一般来说支持html、esc、json、云模板、图片、pdf等。特别是云模板的接口,只需要在开发平台上注册一个账号,然后在云模板上新建一个模板,根据自己的需求来设计模板即可。
设计完模板后,点击右上角的“打印预览”。
在预览页面底部,你可以看到模板ID,JSON
图中Json为“打印云模板”中对应的数据如:
{"":"","":"2019-01-17","":"","":"映美北京分公司","":"张三","":"北京市朝阳区朝阳公园南路108号
","":"","":"映美深圳分公司","":"深圳市南山区科技南路九洲电气大厦708室","":"陆正坤","":"0755-","":"","":"本批货物包括8000台打印机和5000台打印机"}
整个调用参数:
:
:

:1
:
:1
:210
:180
:
:
:
:140
:{"":"","":"2019-01-17","":"","":"映美北京分公司","":"张三","":"北京市朝阳区朝阳公园南路108号","":"","":"映美深圳分公司","":"深圳市南山区科技南路九洲电气大厦708","":"陆正坤","":"0755-","":"","":"本批次包含8000台打印机和5000台打印机"}
内容比较多,需要通过form-data来传递。
印刷效果
打印再也不用计算像素值和坐标值了,只要传数据就可以了,太人性化了。对接过程中发现不能用动态图片,跟他们开发人员沟通后说这个功能很快就会上线。在微信小程序中选择云打印的方式很方便,大家可以试试。