/java-print

Java实现打印服务的例子

Primary LanguageJava

JAVA-PDF-Print

一、基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打印,最后可参考资料偏少,由于项目紧急且对NodeJS的熟悉程度目前也还不够,所以转而使用比较熟悉的Java构建了调用本地打印机进行打印的服务。 为了实现自动打印进行了两种方案的尝试:

  1. 将项目部署到web server,对外提供接口服务,需要进行打印的时候调用接口服务,收到请求后调用本机打印机服务进行数据打印。
  2. 启动一个线程,持续请求数据库并对符合条件的数据进行打印

由于部署环境IP地址并不能固定,所以导致了放弃方案一,使用方案二进行打印尝试,当然也有为方案一预留的服务接口。

二、项目依赖 项目由于打印的结果需要和Web端页面展示的内容相一致,于是打印历程比较艰辛,具体流程以及相关依赖如下: 通过HTTPClient访问远程接口获取数据

生成HTML : 利用Freemarker,将web端的html作为模板进行数据配置和填充

HTML转为PDF: 由于HTML页面不能通过打印机直接打印,而考虑到兼容问题,所以转为PDF最为合适,使用了第三方转换工具:wkhtmltopdf,这也是在使用过程中发现转换结果最好的工具了

使用JAVA获取PrintService服务打印PDF

三、吐槽

  1. 经测试目前线程启动后可能存在中途中断的情况
  2. 对于代码中的hardcode,会在适当的时间移动到配置文件中。
  3. 对于建议和意见欢迎联系liuhao1350@126.com