Java实现pdf文件压缩
时间换空间,实现pdf文件无损压缩。
1、依赖准备
市面上操作pdf文件的组件有spire.pdf.free、itextpdf、openpdf、pdfbox
等,它们各有千秋。我们主要完成的场景为压缩,减少文件大小去优化存储、传输等。
在这里选取的组件为aspose-pdf
和itextpdf
,原因是spire.pdf.free
压缩代码比较直观和简单但是只能免费压缩前10页,itextpdf
压缩代码较为复杂开发难度大适合去水印,而openpdf
和pdfbox
也有开发难度较大的问题。
1、aspose-pdf
依赖
可能比较冷门,阿里云maven仓库等没有对应的依赖,无法通过gav坐标添加!因此我们需要到中央仓库下载jar包!
地址为https://mvnrepository.com/artifact/com.aspose/aspose-pdf
建议选择低版本,高版本难以去除版权水印,如这里选择21.11
版本的

将jar引入工程
这里可以参考这篇文章
https://blog.csdn.net/m0_46357847/article/details/140749772
如果是gradle工程,可参考下图

2、itextpdf
依赖
这里主要用于去除aspose-pdf的版权水印,直接添加即可。
xml
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>