打印方式最终实现

2,698 阅读2分钟
  1. 原生的打印raw其实就是ESC或者TPL还有激光打印机的EPL(也就是说windows打印发送的RAW就是这些) RAW命令的意思就是说,windows会给打印机发送一些打印机自己能够识别的命令,比如ZPL包括一些可读的字符,而其他的比如ESC和POS可能包括不可打印的字符,比如【ESC】字符,这个字符是ASCII里面的不可打印的字符。

关于ASCII不可打印字符

  1. 所以说windows打印指令会给打印机发送最终的raw命令,比如打印txt和png图片,最终还是raw,包括激光打印机,只是激光打印机raw命令跟ESC不一样而已,叫做PCL。

  1. windows除了raw意外还有emf,什么emf?

  1. node如何查看windows/mac/linux支持的打印格式?

  1. 除了调用原生的raw打印命令外,如何实现web端打印?

A. 安装client,用websocket调用client(封装包)打印,如JSPrintmanager

a. 不用JSPrintManager,自己用electron做一个打印服务,然后模仿其,在客户端调用

B. web端调用window.print()浏览器弹窗,用户选择打印机比如Zebra条码打印机,然后打印网页 注意:如果网页有格式和css等,则效果不好,需要用 npm install react-to-print --save-dev 这个包去除格式,自己编辑格式

b. 如果是electron则类似于网页,也可以调用react-to-print打印,当然也可以用eletron自带的print,其实就是window print

C. windows.print是个不错的方案,不用安装第三方,原生的打印,方便在客户电脑安装。但是直接打印web content(用react-to-print去格式)格式不一定会固定(不同电脑),因此可以考虑打印图片或者pdf,如果是pdf的话,用(npm i react-pdf) 渲染pdf后打印。

D. 调用封装包,比如ddl和exe直接原生打印。

E. 还有懒人的云打印。

总之方法很多,各有利弊。

web直接打印的好处是:

-不用调节排版。所见即所得(wiswig: what you see is what you get)!

-几乎不用安装什么第三方

-客户有手,会点击打印按钮即可

坏处是:

-如果不是web环境则不行

原生打印的好处是:

-速度快

-原生的命令支持,比如开钱柜,beep响声等特殊功能

坏处是:

-需要第三方依赖

-排版是个恶心事情