node调取打印机dll输出乱码

背景介绍

最近公司接了一个景区的项目,好巧不巧的分给我一个打票的功能。

过程

这有什么难的呀?

客户有一个一直在运行的系统,我去看了看,就是做一个网页然后预览,调用系统打印。

我求你当个人吧

客户提了一个需求,点击打印直接打印,不要什么预览确认,还要一定要B-S程序,也就是说只能使用IE的ActiveX调用dll。

这个时候我们的讨论结果是:没问题,框架支持IE,我可以用ActiveX开发。

我可求你当个人吧x2

是的你们没有猜错,现代框架哪还有兼容IE ActiveX的。只能用node在本地跑一个websocket server,于是只能重写了,因为涉及到一些高度的计算方法,要重写还挺麻烦的,我采用了一个取巧的方法:node直接接收指令打印,算法依旧在web端完成。

问题出现了

dll提供的似乎是按照GBK进行的解码,所以打印出来全是乱码,也就是说我们要转换一下编码再发送给打印机。

解决方案

iconv库,可以将已知编码转换为另一种编码,此处将UTF-8转换为GBK