当前位置: 首页 > article >正文

使用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实现转换 

安装依赖包

implementation 'org.jodconverter:jodconverter-local:4.4.0'

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

// 构建并启动 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

# 进入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基本一致

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

验证是否安装成功

libreoffice7.5 --version

 看到这个说明安装成功了

 

如果报错,说找不到xxx.so,说明缺失依赖库,先安装依赖库

sudo yum install libXinerama libXcomposite libXrandr cups-libs libSM libICE cairo

解决中文乱码

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

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

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

# 安装解压工具
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博客 

http://www.lryc.cn/news/2391729.html

相关文章:

  • 使用LSTM进行时间序列分析
  • 【密码学——基础理论与应用】李子臣编著 第十三章 数字签名 课后习题
  • k8s中kubeSphere的安装使用+阿里云私有镜像仓库配置完整步骤
  • Agilent安捷伦Cary3500 UV vis光谱仪Cary60分光光度计Cary1003004000500060007000 UV visible
  • JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案
  • arcgis js 4.x 的geometryEngine计算距离、面积、缓冲区等报错、失败
  • vSphere 7.0 client 提示HTTP状态 500- 内部服务器错误
  • 用 Python 打造你的专属虚拟试衣间!——AI+AR 如何改变时尚体验
  • Java与Flutter集成开发跨平台应用:从核心概念到生产实践
  • SpringAI 大模型应用开发篇-纯 Prompt 开发(舔狗模拟器)、Function Calling(智能客服)、RAG (知识库 ChatPDF)
  • 微信小程序的软件测试用例编写指南及示例--性能测试用例
  • Unsupervised Learning-Word Embedding
  • 远控安全进阶之战:TeamViewer/ToDesk/向日葵设备安全策略对比
  • 变量的计算
  • 深入了解linux系统—— 库的制作和使用
  • Java中的设计模式:单例模式的深入探讨
  • View的工作流程——measure
  • 【系统架构设计师】2025年上半年真题论文回忆版: 论软件测试方法及应用(包括解题思路和参考素材)
  • 《软件工程》第 13 章 - 软件维护
  • 2024 CKA模拟系统制作 | Step-By-Step | 12、创建多容器Pod
  • python:selenium爬取网站信息
  • Nginx版本平滑迁移方案
  • WPF 按钮悬停动画效果实现
  • 满天星之canvas实现【canvas】
  • 我在架构师面前谈 Spring Inner Beans,他直接点头说:这人有料!
  • Java无序数组 vs 有序数组:性能对比与选型指南
  • 【Linux 基础知识系列】第二篇-Linux 发行版概述
  • 【开源解析】基于PyQt5+Folium的谷歌地图应用开发:从入门到实战
  • 在 Ubuntu 22.04 LTS 上离线安装 Docker
  • python调用langchain实现RAG