美文网首页
如何用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