从零开发标签打印机控件-1-技术调研

1,102 阅读3分钟

背景

前几天产品经理提了一项自以为很很简单的需求,那就是利用浏览器打印快递面单。
众所周知,浏览器需要打印文件,必须要调用浏览器或者系统的打印窗口,需要等用户确认之后才可以进行打印,没办法做到无感打印,也没办法监听用户是否真的进行了打印,只能监听是否调起了打印窗口,而且产品的需求是批量打印快递面单,运营那边没办法接受每次都要点击这种效果。
由于我从来没有接触过硬件的开发,接下来就是漫长的调研之路,感慨一下国内的资料还不多啊。

PS:我接触这部分的时间并不长,对部分技术的理解可能有误差,欢迎各位斧正。

技术调研

现有产品

目前国内最主流的打印机控件应该是 C-Lodop。
demo非常完善,如果没有相应的技术栈,我推荐直接使用 C-Lodop来作为解决方案,授权费用也不贵。
PC端还有其他很多类似的标签打印软件,但看起来大部分都不支持API的调用,我也没有做过多的研究。
PS:LoDop打钱

打印机指令集

第一次查到的时候大吃一惊,打印机还有语言之说,不是只要调用系统打印机,点击打印就可以实现了,从来没见过可以编写代码的地方啊。

之后了解到,目前主流的打印机控制语言主要有三种:

  • Epson 公司的 ESC 命令 集(普通打印机)
  • HP 公司的 PCL 命令集
  • Adobe 公司的 PostScript(简称 PS)命令集

其它:CPCL 命令集(移动打印机), TSPL 命令集(标签打印机)

  • 普通打印机都是 ESC 指令集
  • 标签打印机这种是 TSPL 指令集
  • 移动打印机 CPCL 打印语言

了解到打印快递面单的机子大部分都是 TSPL 指令集,就去收集 TSPL 相关的数据。

TSPL

TSPL 是 TSC 旗下打印机使用的语言,大部分的资料都可以在 TSC 的 官网资料 中找到。
资料有各个语言的 SDK 以及 demo 下载,如果你买得是 TSC 的打印机可以直接使用,其他牌子的打印机能否使用就要你自己去实验了。
开发最关心的自然是开发文档,这里再贴一个 官方文档 的地址。

打印机连接方式

电脑驱动打印机大致有这么几种方式可供选择,这里只涉及Win端:

  1. Win端安装打印机驱动,调用打印机驱动来调用原生指令
  2. 安装 WinUSB驱动覆盖掉打印机驱动,向USB写入原生指令即可完成。
    1. 优点:理论上Win,Linux,Mac都能使用,天然跨端
    2. 缺点:Win端需要额外安装驱动,且覆盖驱动后无法在通过系统打印机来进行调用
  3. 利用蓝牙,公司使用的打印机不支持就PASS了
  4. 利用局域网,同上

最后的技术栈选择

首先平台是在 Win 系统,需要硬件进行交互那就需要一个桌面应用。
我选择了我最熟悉的 node 以及 electron。虽说最熟悉,但也没开发过实际的应用23333。
Win驱动+electron+express

接下来会介绍一下TSPL相关的指令以及如何开发应用。