jodconverter+openOffice word文档pdf转换

刚好遇到了,花了几个小时时间研究了下。

第一种:POI+iText  PDFBox,试了下,效果不太行,比较差,而且有些中文以及格式不好处理

第二种:jacob 不支持linux,不考虑

第三种:aspose 收费,不考虑

第四种: jodconverter+openOffice/LibreOffice 就是我使用的这种,效果较好,兼容也可以

如下

maven依赖

<dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.4.0</version>
        </dependency>

java伪代码

// 获取openoffice管理器(服务器需要安装OpenOffice的安装目录)
                    LocalOfficeManager localOfficeManager = LocalOfficeManager.builder().officeHome(ApplicationPropertiesUtils.getOfficeHome()).install().build();
                    // 判断openoffice服务是否打开
                    if(!localOfficeManager.isRunning()){
                        localOfficeManager.start();
                    }
                    //文件转化(文件/流都可以)
                    JodConverter.convert(inputStream).to(outFile).execute();
                    // 关闭localOfficeManager服务
                    OfficeUtils.stopQuietly(localOfficeManager);
ApplicationPropertiesUtils.getOfficeHome()换成自己的openoffice路径,比如:/opt/openoffice4
inputStream是word文档。
outFile是转换后的pdf文件

会自动匹配

也可以指定转换文件后缀

// 获取openoffice管理器(服务器需要安装OpenOffice的安装目录)
                    LocalOfficeManager localOfficeManager = LocalOfficeManager.builder().officeHome(ApplicationPropertiesUtils.getOfficeHome()).install().build();
                    // 判断openoffice服务是否打开
                    if(!localOfficeManager.isRunning()){
                        localOfficeManager.start();
                    }
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    LocalConverter converter = LocalConverter.builder().officeManager(localOfficeManager).build();
                    // 进行格式转换
                    DocumentFormat extension = DefaultDocumentFormatRegistry.getFormatByExtension(suffix);
                    converter.convert(file.getInputStream()).as(extension).to(baos).as(DefaultDocumentFormatRegistry.PDF).execute();
                    // 关闭localOfficeManager服务
                    OfficeUtils.stopQuietly(localOfficeManager);
                    InputStream inputStream=new ByteArrayInputStream(baos.toByteArray());

convert(file.getInputStream()).as(extension).to(baos).as(DefaultDocumentFormatRegistry.PDF) 文件File/流都可以,后缀也可以根据自己业务处理

支持种类比较多,一般都能满足大多数需求了,源码DefaultDocumentFormatRegistry里面有各种格式的,看是否满足自己的需求

windows和服务器linux都需要安装OpenOffice,官方下载可能有点慢,需要的看下面的链接

windows:https://pan.baidu.com/s/1_dur2uG9_hzci57CMMZvEg   提取码:hi6a

Ubuntu:百度网盘 请输入提取码  提取码:m7hy

centos:百度网盘 请输入提取码   提取码:p6u9

Ubuntu安装步骤:

必须先卸载默认安装的LibreOffice,然后用deb方式的压缩包  

sudo apt-get remove --purge libreoffice*

将压缩包上传到服务器

tar -xvzf Apache_OpenOffice_4.1.15_Linux_x86-64_install-deb_zh-CN.tar.gz

cd zh-CN/DEBS/

sudo dpkg -i *.deb

cd desktop-integration/

sudo dpkg -i openoffice4.1-debian-menus_4.1.15-9813_all.deb

安装完成后在/opt/openoffice4/program/

一般不用启动,如果要启动

cd /opt/openoffice4/program/

启动可能会弹出 需要Xmanager软件来处理X11转发请求

soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &

centos还没安装,测试服务器是Ubuntu

相关推荐

  1. jodconverter+openOffice word文档pdf转换

    2024-04-12 05:48:04       40 阅读
  2. python将visio转换PDF 文件

    2024-04-12 05:48:04       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 05:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 05:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 05:48:04       82 阅读
  4. Python语言-面向对象

    2024-04-12 05:48:04       91 阅读

热门阅读

  1. Spring Cloud启动类上的注解详解

    2024-04-12 05:48:04       34 阅读
  2. SpringMVC原理分析(十二)--异常处理流程

    2024-04-12 05:48:04       28 阅读
  3. 浅谈:从医疗元宇宙向更多实业领域的拓展

    2024-04-12 05:48:04       38 阅读
  4. Flask、Django和Tornado怎么选

    2024-04-12 05:48:04       33 阅读
  5. 【C#】C#匹配两个相似的字符串莱文斯坦距离

    2024-04-12 05:48:04       40 阅读
  6. 定期与设定域名地址交互工具

    2024-04-12 05:48:04       33 阅读
  7. 探索量子计算:打开未来技术的大门

    2024-04-12 05:48:04       36 阅读
  8. android 判断是否联网

    2024-04-12 05:48:04       36 阅读
  9. C#面:如何创建一个自定义异常?

    2024-04-12 05:48:04       35 阅读
  10. js常用数据处理方法

    2024-04-12 05:48:04       40 阅读
  11. K8S问题记录

    2024-04-12 05:48:04       33 阅读