JavaWebB/S打印解决方案

Java打印是个老大难的问题,下面就简单说下具体的解决方案。

单点打印:
1.js打印
window.print打印当前窗口页面,在封装下该方法即可实现页面指定区域打印,网上有相关插件,如jqprint,但打印出的文件清晰度不是很高。(IE8-不支持该功能)
2.PDF打印
PDF是Adobe公司的产品,由于Adobe公司早转入HTML5的环抱中了,大部分浏览器可直接浏览打印下载PDF文件。可以先将HTML页转成PDF文件再打印,该方案打印的效果好。

解决方案:wkhtmltopdf,该工具可将HTML页面转成PDF文档或者图片。官网http://wkhtmltopdf.org/下载后安装到服务器上,调用dos命令即可实现转换,Java代码示例Runtime.getRuntime().exec(“C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe https://www.baidu.com c:\1.pdf”)。

多点打印:
产品开发中经常会遇到多点自动打印的情况,如前台出订单后,仓库也需要自动出单。Java原生打印APIPrintable特别不友好,开发效率低,打印效果不理想。Java文档打印实际调用的是Windows的dos命令print /d:\\192.168.1.17\epson(打印机名称) d:\1.txt(文档),只能打印简单的TXT文档,其他文档打印效果极不理想,总出现乱码。根本原因是Windows操作系统不开源,Java很难获取Windows系统相关打印服务打印文件。

解决方案:微软平台实现打印的基本功能封装成dll文件,在通过Java的反射机制调用。实测微软打印接口代API友好,可以通过转义字符/r/n实现打印排版,并且打印出的字体也很清晰。

注意事项:将客户端的多个打印机设成共享,即可通过服务器调用客户端打印机实现打印。
打印机都有Windows的驱动,未必有Linux驱动,当服务器为Linux系统的时候,Linux系统无法获取Windows系统共享的打印服务,只能将其识别为一个文件夹。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值