jodconverter+openOffice word文档pdf转换

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

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

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

第三种:aspose 收费,不考虑

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

如下

maven依赖

XML 复制代码
<dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.4.0</version>
        </dependency>

java伪代码

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文件

会自动匹配

也可以指定转换文件后缀

java 复制代码
// 获取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

相关推荐
CodeCraft Studio7 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
一只花里胡哨的程序猿9 小时前
odoo打印pdf速度慢问题
pdf·odoo
揭老师高效办公10 小时前
在Word和WPS文字中将手机中间4位替换为星号****
word·wps文字
灵海之森12 小时前
Python将md转html,转pdf
pdf
阿幸软件杂货间16 小时前
最新PDF版本!Acrobat Pro DC 2025,解压即用版
pdf·adobe acrobat·acrobat
星空的资源小屋17 小时前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
会飞的小菠菜21 小时前
如何一次性将多个PPT幻灯片批量转换成PDF文档
pdf·powerpoint·ppt·批量·格式转换
somethingGoWay1 天前
wpf .netcore 导出pdf文件
pdf·wpf·.netcore
打码人的日常分享1 天前
运维服务方案,运维巡检方案,运维安全保障方案文件
大数据·运维·安全·word·安全架构
揭老师高效办公1 天前
在Word和WPS文字的表格中快速输入连续的星期、月、日
word·wps