SpringBoot整合office转换与预览
一、介绍
1、简介
有时候我们需要在程序中使用到office的转换和预览功能,本文就针对这个需求记录了两种较为简单的office转换和功能:aspose和jodconverter。当然还有其他开源第三方(kkfileview)
2、aspose简介
Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,主要提供.net跟java两个开发语言的控件套包,通过它,可以有计划地操纵一些商业中最流行的文件格式:Word, Excel, PowerPoint, Project,等office文档以及PDF文档。
但是不足的是aspose包是收费的,并且单独收费,网上有很多资料和程序可以参考下载,这里提供一个下载地址aspose相关jar包下载;
3、jodconverter简介
JODConverter是 Java OpenDocument 转换器,可在不同办公格式之间转换文档。它利用Apache OpenOffice或LibreOffice,它们为当今可用的 OpenDocument 和 Microsoft Office 格式提供可以说是最好的免费导入/导出过滤器。JODConverter自动执行 OpenOffice/LibreOffice 支持的所有转换。但要求在本机率先安装好相应的程序,目标是完成office文档->pdf
但是其优点是免费,可以在win/linux上使用,这里更加推荐libreoffice
二、springboot整合aspose实战
1、前期依赖准备
1.1 介绍
下载好相关依赖包后,就需要在springboot项目里引入相关jar包还有License.xml
文件,License.xml
文件就放在reseources目录下,这里有两种方式引入jar包,项目直接引入以及在maven添加本地包,其中License.xml
文件内容如下,word,excel转pdf可共用一个license.xml
1 | <License> |
1.2 项目直接引入jar包
其他三个包同理
1 | <!--添加本地的jacob.jar包--> |
最后在pom.xml引入
1 | <plugins> |
1.3 maven添加本地包
其他三个包同理,直接在命令行添加安装
1 | mvn install:install-file -Dfile=D:\share\aspose\jar\aspose-words-14.9.0-jdk16.jar -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=14.9.0 -Dpackaging=jar |
其次在pom.xml文件上直接使用即可
1 | <dependency> |
2、office转pdf实现
这里主要介绍word/ppt/excel转pdf以及其在线预览,另外还有pdf转png/jpg
文件上传可以参考SpringBoot文件上传与校验
2.1 word转pdf
这里还可以控制生成水印
1 | import com.aspose.words.*; |
2.2 Excel转pdf
1 | import com.aspose.cells.License; |
2.3 ppt转pdf
1 | import com.aspose.slides.License; |
2.4 pdf转图片
首先需要在pom.xml中引入相关依赖
1 | <dependency> |
工具类代码
1 | import org.apache.pdfbox.pdmodel.PDDocument; |
2.5 pdf添加水印
首先添加依赖
1 | <dependency> |
工具包
1 | import com.itextpdf.text.DocumentException; |
3、office在线预览(简单版)
引入依赖
1 | <dependency> |
application.yml
配置
1 | server: |
工具类
1 | import javax.servlet.http.HttpServletResponse; |
controller层,启动后访问接口即可成功在线预览,还可以直接下载
1 | import com.example.mx80.utils.*; |
三、SpringBoot集成jodconverter实战
1、前期依赖准备
首先下载好OpenOffice或LibreOffice,并在pom.xml
引入相关依赖
1 | <!--转换工具--> |
其次在application.yml
设置相关参数
1 | # word 转 pdf 相关配置 |
2、office转pdf实战
这里是我的controller类,可以简单参考,这里只做了文件上传和下载,预览和下载其实一个道理,可以参考上面
1 |
|
我的service类,包含下载和文件转换,这里我把文件都保存在了target/classes/static/docs
下面了
1 |
|
参考文章
https://blog.csdn.net/WXk_wer/article/details/116977449
https://blog.csdn.net/weixin_46031754/article/details/121670267