Java打印文件
一、简介
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java 提供的打印功能一直都比较弱。实际上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很轻量的打印支持。实际上,SUN 公司也一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端, jdk1.4 则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。
这里打印对象主要是图片和pdf文件两种常见形式,其他office文件可以通过相应程序转成pdf进行打印,比如aspose(收费,需要破解)/openoffice(需要先搭建本地服务)/Jacob(只有windows)
二、打印实践
首先要保证电脑GUI打印能正常运行,否则连打印机都没有连接,那怎么打印?
1、JPG图片打印
打印JPG图片格式的文件,本次采用的Java原生的打印方式。jdk1.4之后对打印功能有了很好的支持。Java 的打印 API 主要存在于 java.awt.print
包中。而 jdk1.4 新增的类则主要存在于 javax.print 包及其相应的子包 javax.print.event
和 javax.print.attribute
中。其中** javax.print 包中主要包含打印服务的相关类,而 javax.print.event 则包含打印事件的相关定义,javax.print.attribute 则包括打印服务的可用属性列表等**。可以很好的解决打印JPG图片格式的需求。
-
优点:jdk的原生支持的打印功能,可直接使用,支持设置各项打印参数。
-
缺点:局限性较大,只能打印一些图片和文本格式的文件。
1 | public class PrintUtil { |
2、图片/pdf原生打印
这里pdf打印可能和硬件有关系,需要安装Adobe Reader,而且现在pdf也不使用此方法打印,可以用作借鉴
1 | public class PrintUtil { |
3、PDF文件格式打印实现
这里使用Apache PDFbox来实现进行PDF文件格式的打印。Apache PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。Apache PDFBox还包含了数个命令行工具。在此,我们只研究打印功能。
- 优点:功能强大,开源软件,较完美的解决了PDF格式文件的一系列处理,使用方便
首先导入依赖
1 | <dependency> |
具体代码实现
1 | public class PrintUtil { |
参考文章:
https://blog.csdn.net/vatxiongxiaohui/article/details/83985896
https://blog.csdn.net/weixin_45944086/article/details/108148264
https://blog.csdn.net/weixin_46031754/article/details/121670267