美文网首页
如何用Java将Office文档转换为PDF

如何用Java将Office文档转换为PDF

作者: 十秒记忆梁渣渣 | 来源:发表于2018-11-21 11:10 被阅读0次

需求场景

office文档在web端在线浏览

实现思路1

利用POI分析word文档或者xls表格,转化为HTML,再通过itext将HTML转化为PDF。
优点:无
缺点:分析转HTML时 office格式比较难转化,并且word文档有doc、docx,xls表格有xls、xlsx两种后缀格式,实现太复杂。word文档转换后格式还好,但表格就真的。。。贼丑 (样式太难搞了)。

实现思路2

比如window下的wps office,自带有转格式功能。那么是否可以利用这种第三方office软件去将office文档转化为PDF呢。答案是肯定的。网上一搜一大把利用openoffice转换为PDF。
优点:实现简单
缺点:服务器需安装对应的服务
由于本人电脑系统为Ubuntu,并且自带Libreoffice 软件。第三方jar包 JodConventer 也支持Libreoffice 于是采取此方案。
好,下面来一个利用LibreOffice将office转换为PDF格式的Demo。

实现Demo

环境
  • Libreoffice套件(全平台,没有yum与apt源,Linux需要在官网下载)
  • Java环境+JodConventer
在pom.xml中添加
        <!--调用本地OFFICE服务-->
        <!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-local -->
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.2.1</version>
        </dependency>
代码调用
//获取libreoffice套件的app地址 这里是Centos 7 官网下载安装后的软件位置
String appPath = "/opt/libreoffice6.0"; 
String source = "这里是需要转换的文档地址";
String target = "转换后的pdf地址,后缀要为pdf";
File inputFile = new File(source);
File outputFile = new File(target);
//从本地建立连接
OfficeManager officeManager = LocalOfficeManager.builder().officeHome(appPath).build();
try{
    officeManager.start();
    //转换
    LocalConverter.builder()
                    .officeManager(officeManager)
                    .build()
                    .convert(inputFile)
                    .to(outputFile)
                    .execute();
}catch(OfficeException e){
    //捕捉异常自定义操作
}finally{
    //关闭office连接
    OfficeUtils.stopQuietly(officeManager);
}
关于Libreoffice套件在linux下的地址

ubuntu系统自带该套件,以上代码中appPath是libreoffice的根目录(program目录下要有soffice.bin文件),如果不知道默认安装在哪里可以终端敲
$ sudo find / -name libreoffice

敲命令.png
同理Centos也是一样,推荐从官网下载套件然后用rpm安装(代码中appPath为centos下的位置)
转换效果如图
效果图.png

浏览器支持直接浏览pdf格式文件。。。

相关文章

网友评论

      本文标题:如何用Java将Office文档转换为PDF

      本文链接:https://www.haomeiwen.com/subject/xczxqqtx.html