使用java实现word转pdf,html以及rtf转word,pdf,html

word,rtf的转换有以下方案,想要免费最靠谱的是LibreOffice方案,

LibreOffice 是一款 免费、开源、跨平台 的办公软件套件,旨在为用户提供高效、全面的办公工具,适用于个人、企业和教育机构。它支持多种操作系统(Windows、macOS、Linux 等),并能兼容微软 Office(如 DOCX、XLSX、PPTX 等)及其他常见文件格式,是替代商业办公软件的理想选择。

LibreOffice不仅能实现rtf转word,还能实现rtf转pdf,转html,word转pdf,转html,相当强大。

LibreOfficewindows安装很简单,linux安装有点复杂,以下是实现方法

方案 优点 缺点 适用场景
Apache POI + RTF 解析 免费、跨平台 开发复杂,格式支持有限 简单 RTF 转换需求
Jacob(COM 调用) 高质量转换 仅 Windows,依赖 Office 企业内网环境(Windows + Office)
Aspose.Words 高质量、跨平台、易用 商业付费 需高质量转换的商业项目
Free Spire.Doc 免费(有限制) 有水印限制 非商业项目或测试用途
HTML 中间转换 灵活 格式丢失风险 对格式要求不高的场景
LibreOffice 无头模式 免费、跨平台、支持复杂格式 依赖安装、资源占用高 需免费处理复杂格式的场景

windows环境安装

进入下载页:下载 LibreOffice | LibreOffice 简体中文官方网站 - 自由免费的办公套件

选择下载msi文件,下载好后直接安装就行了

java实现转换

安装依赖包

java 复制代码
implementation 'org.jodconverter:jodconverter-local:4.4.0'

代码实现 很简单,构建LibreOffice实例和jodConverter实例,然后就能转换了,jodConverter能够通过文件名后缀识别你想要转换的格式

java 复制代码
// 构建并启动 LibreOffice 实例
OfficeManager officeManager = LocalOfficeManager.builder()
        .install()
        .build();
officeManager.start();
// 创建文档转换器
DocumentConverter converter = LocalConverter.builder()
        .officeManager(officeManager)
        .build();
//进行转换
converter.convert(new File("D:\\T_14_3_1_6.rtf")).to(new File("D:\\11.docx"))
        .execute();
officeManager.stop();

Linux安装LibreOffice

我的linux是centos7,核心比较老,只能选择一些老版本,如果你服务器版本新可以选择新版本

老版本下载地址:Index of /libreoffice/old/7.5.9.2/rpm/x86_64

下载安装包以及语言包

把下载好的包上传到/opt目录下,然后进入opt目录进行解压安装

安装LibreOffice

bash 复制代码
# 进入opt目录
cd /opt
# 解压
tar -zxvf LibreOffice_7.5.9.2_Linux_x86-64_rpm.tar.gz
# 进入解压后的RPMS目录
cd LibreOffice_7.5.9.2_Linux_x86-64_rpm/RPMS/
# 安装LibreOffice,如果你是新版本系统可以用dnf命令
yum localinstall *.rpm

安装语言包,跟安装LibreOffice基本一致

bash 复制代码
cd /opt
tar -zxvf LibreOffice_7.5.9_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
cd LibreOffice_7.5.9.2_Linux_x86-64_rpm_langpack_zh-CN/RPMS/
yum localinstall *.rpm

验证是否安装成功

bash 复制代码
libreoffice7.5 --version

看到这个说明安装成功了

解决中文乱码

一般在windows下安装我们的LibreOffice成功后,转换中文都是正常的,但在linux上基本上都会出现乱码的问题。 因为linux中缺少一些中文字体导致的。这个时候我们需要把windos中的字体文件夹上传到linux上,同步一下字体信息。

1.打开windows电脑的C:\Windows,把Fonts压缩成zip包

2.把压缩包上传到 /usr/share/fonts目录下

bash 复制代码
# 安装解压工具
yum -y install unzip
cd /usr/share/fonts
# 解压
unzip Fonts.zip
yum -y install cups-libs fontconfig
# 给Fonts目录权限
chmod -R 755 /usr/share/fonts/Fonts
yum -y install ttmkfdir
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
# 刷新字体
fc-cache
# 查看安装的字体
fc-list

报错处理

如果运行java时报java.lang.NullPointerException: officeHome must not be null,说明officeHome没有正确识别到,需要手动添加,如果你安装目录是/opt,则officeHome在/opt/libreoffice7.5

修改代码如下

参考博客:Linux Centos系统安装LibreOffice全过程详解_libreoffice安装教程linux-CSDN博客

相关推荐
CodeCraft Studio10 小时前
国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF
java·html·word
碧海蓝天go星辰大海10 小时前
word为跨页表格新加表头和表名
word
进阶的小木桩10 小时前
C# 导出word 插入公式问题
开发语言·c#·word
碧海蓝天go星辰大海10 小时前
word添加页眉
word
Dontla10 小时前
word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)
prompt·word
八饱粥10 小时前
word中表格拉不动以及插入图片有间距
word
我有一棵树16 小时前
【AI工具应用】使用 trae 实现 word 转成 html
word
开开心心就好1 天前
能按需拆分 PDF 为多个文档的工具
javascript·python·智能手机·django·pdf·word·excel
VBAMatrix2 天前
审计报告附注救星!实现Word表格纵向求和+横向计算及其对应的智能校验
word·核对数据·审计报告·审计·附注