工作之余写了个小玩意,目前仅满足需求,还不能定制化扩展。 发出来大家提提意见啦
Web 打印解决方案
当前 WEB 应用开发非常流行,主要原因是 WEB 应用客户端的规则很简单,容易学习,容易维护,容易发布,降低了开发难度。但是,WEB 应用的打印一直以来却是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印(如零售小票)难度较大,其难度在于如何将需要打印的内容,精确套打到标签、票据中,精确控制分页,并实现高速连续打印,可以说需求还是很多的。
目前打印主要有下面几种方案:
- 直接使用浏览器的打印功能
- 使用 print css
- 使用 PDF 文件
- 采用 ActiveX
- 打印精灵(市面上已经存在的)
各有各的优缺点吧。
我这边采用的方案结合了 PDF 和打印精灵相结合的方案(纯属偶然,后面才发现的),用 C#写的目前只能在 Win 下面跑。目前,这(you)个(bu)东(shi)西(bu)还(neng)很(yong)菜。
使用步骤:
- 设计模版
- 从自己的接口获取到自己需要打印的数据并组装
- 启动 Win 程序
- js Post 数据到指定的本机端口
软硬件支持:
- PDF 阅读软件(要求能够识别打印命令的,Adobe 官方的支持)
- 打印机驱动
实现过程:
- 使用某模版设计工具设计模版
- 在 Win 程序内部内建一个基础班 HTTP server 用于接收数据
- 当有数据 POST 到 Win 程序之后,使用读取到的数据生成 PDF 文件到临时文件夹
- 使用 Process 调用 PDF 阅读软件打印指令将打印机数据发送到打印
- 完成打印
当前这个程序在我司用了几年了。 由于使用 PDF 作为数据源,所以支持的打印机很多,基本没有限制。
缺点:
- 模版文件需要在 VS 上面设计,目前还没找到什么办法可以自行设计(原因是用的报表不是开源的,虽然是好多年前的版本了,要是有问题自行了断)。
- 目前对于顺序打印的支持不是很好(有的打印要求串行,例如连一块的那种三联单)
后面考虑没事再完善一下,目前考虑这几个地方:
- 客户自定义模版的设计
- 把文档完善一下
- 把顺序打印完善完善
- 看看能不能跨平台
后面再看看,顺便说一句真有需要的朋友我可以免费帮忙设计模版,直接 run 起来==
下面是 GIT 地址 https://github.com/xiangbohua/PrintServer2