700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java操作word文档将docx转换为pdf格式

Java操作word文档将docx转换为pdf格式

时间:2021-09-27 08:05:08

相关推荐

Java操作word文档将docx转换为pdf格式

Java操作word文档将docx转换为pdf格式

一.整体说明

在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式,才能实现在线查看和预览,此时需要安装课件转换插件,如课 件只使用视频或者 pdf,可无需安装.

二.插件说明

课件转换组件支持两种,分别为 LibreOffice 和 OpenOffice 两种,两个安装一 个即可,本文推荐使用 LibreOffice

三.插件下载

进入 LibreOffice 官网:点击下载

四.组件安装

4.1 上传文件

将下载好的 LibreOffice_6.4.7_Linux_x86-64_rpm.tar.gz 上传到服务器的任意 位置,本位将组件放置位置为: /home/LibreOffice_6.4.7_Linux_x86-64_rp m.tar.gz

4.2解压文件

cd /hometar -xvf LibreOffice_6.4.7_Linux_x86-64_rpm.tar.gz

4.3安装组件

cd /home/LibreOffice_6.4.7.2_Linux_x86-64_rpm/RPMS/ yum localinstall *.rpm -y

等待组件安装完毕即可

4.4 获取配置

进入系统/opt 目录,可以看到 libreoffice6.4 文件夹,此文件夹的路径则是程序 要的 OfficeHome,完整路径为:/opt/libreoffice6.4 (注意,不同版本和不同 系统,此文件夹的位置都不一样)

Linux 系统一般为:/opt/libreofficex.x

MacOs 系统一般为:/Applications/LibreOffice.app/Contents

Windows 系统一般为:C:/Program Files/LibreOffice

4.5配置程序(此处可忽略,在第五步,Java代码编写中进行了配置)

打开程序配置文件,如:application-*.yml 或外置配置文件 application-local.yml,修改 office-home 配置,如:

# 文档转换jodconverter:local:enabled: trueoffice-home: C:/Program Files/LibreOfficemax-tasks-per-process: 10port-numbers: 8100

五.Java代码编写

5.1 先进行依赖导入

<!-- 文件转换,通过OpenOffice或LibreOffice来转换 --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-core</artifactId><version>4.4.2</version></dependency><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.4.2</version></dependency><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.2</version></dependency>

5.2 yml中数据配置

# 文档转换jodconverter:local:enabled: trueoffice-home: C:/Program Files/LibreOfficemax-tasks-per-process: 10port-numbers: 8100

此处我使用的开发环境是windows,如果上线到linux服务器,需要替换office-home目录(在上述4.4中已经进行了说明)

port-numbers 端口为文档转换的端口,可随意替换,但是保证不被占用

5.3

@Lazy@Autowiredprivate DocumentConverter converter;/*** 传入完整的URL路径* @param input word文件所在位置* @param dist word转pdf后的文件位置* @throws OfficeException*/@Overridepublic String convert(String input, String dist) throws ServiceException {log.info("++++++++++传入:"+input);//源文件读取不到File srcFile = new File(input);if(!srcFile.exists()){throw new ServiceException("输入文件不存在!");}log.info("++++++++++目标文件:"+dist);//生成时要增加后.pdf后缀,否则无法转换File outputFile = new File(dist);//必须包含后缀才能转换try {converter.convert(srcFile).as(DefaultDocumentFormatRegistry.PDF).to(outputFile).execute();return dist;}catch (OfficeException e){throw new ServiceException("文件转换过程发生错误:"+e.getMessage());}}

注意:DocumentConverter 属于导入的依赖的中的接口文件

5.4 配置pdf 的访问路径

/*** 转换文档类型数据* @param provide* @param entity* @throws ClientException*/private void convertDocx(CertGrant certGrant,String url) throws ClientException {// 本地上传LocalConfig conf = localUpService.getConfig();// 相对文件路径// 变成物理路径String path = this.getRealPath(conf, url);// 目标地址String dist = path+".pdf";// 返回物理路径(pdf的物理路径 此处没用)String rest = officeService.convert(path, dist);// 再变回访问路径String result = url + ".pdf";//TODO 转换DoccertGrant.setCertFilePdf(result);// this.saveOrUpdate(certGrant);return;}

注意:officeService.convert()方法返回的是原word文档的网络地址, 需要在后缀添加 “.pdf”,即可在网络中访问次pdf文件

如图所示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。