使用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

 看到这个说明安装成功了

 

解决中文乱码

一般在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.pswp.cn/pingmian/82677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP证书的作用与申请全解析:从安全验证到部署实践

在网络安全领域,IP证书(IP SSL证书)作为传统域名SSL证书的补充方案,专为公网IP地址提供HTTPS加密与身份验证服务。本文将从技术原理、应用场景、申请流程及部署要点四个维度,系统解析IP证书的核心价值与操作指南。 一…

GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【三】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

超简单Translation翻译模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻译模型可以实现200多种语言翻译,Helsinki-NLP/opus-mt-en-zh是其中英互译模型。由于项目需要,在本地进行搭建,并记录下搭建过程,方便后人。 1. 基本硬件环境 CPU:N年前的 Intel…

Go语言JSON 序列化与反序列化 -《Go语言实战指南》

JSON(JavaScript Object Notation)是一种常见的数据交换格式。Go 标准库提供了 encoding/json 包,用于方便地将结构体与 JSON 之间互转。 一、序列化(Marshal) 将 Go 中的数据结构(如结构体、map、slice 等…

免费PDF工具-PDF24V9.16.0【win7专用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取码: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

网络 :序列和反序列化

网络 :序列和反序列化 (一)序列和反序列 概念(二)实例1. 封装socket 接口2. 制定协议(用于实现序列和反序列化)3. 计算(实现计算器功能)4. 服务器(将上面所有的类功能调用起来)5. 服务端6.客户端…

LiveQing 视频点播流媒体 RTMP 推流服务功能:搭建 RTMP 视频流媒体服务详细指南

LiveQing视频点播流媒体RTMP推流服务功能:搭建RTMP视频流媒体服务详细指南 一、流媒体服务搭建二、推流工具准备三、创建鉴权直播间四、获取推流地址五、配置OBS推流六、推流及播放七、获取播放地址7.1 页面查看视频源地址7.2 接口查询 八、相关问题解决8.1 大疆无人…

UE5 Niagara 如何让四元数进行旋转

Axis Angle中,X,Y,Z分别为旋转的轴向,W为旋转的角度,在这里旋转角度不需要除以2,因为里面已经除了,再将计算好的四元数与要进行旋转的四元数进行相乘,结果就是按照原来的角度绕着某一轴向旋转了某一角度

【微服务】SpringBoot 对接飞书审批流程使用详解

目录 一、前言 二、前置准备 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 获取飞书开放平台文档 2.4 创建应用 2.5 发布应用 2.6 应用添加操作权限 2.7 获取SDK 三、审批流程对接过程 3.1 配置流程审批定义(流程审批模型) 3.2 自定义应用添加审批AP…

主键与唯一键详解:概念、区别与面试要点

主键与唯一键详解:概念、区别与面试要点 一、核心概念解析 1.1 主键(Primary Key) 主键是数据库表中用于唯一标识每一行记录的列或列组合,具有以下核心特性: 唯一性:主键值在整个表中必须唯一,不允许重复非空性:主键列不允许包含NULL值不可变性:主键值一旦确立,原则…

前端面试准备-1

1.NodeJS的优缺点 优点:   高并发(最重要的优点)   适合I/O密集型应用 缺点:   不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的…

GO并发过高导致程序崩溃如何解决

#作者:曹付江 文章目录 1.并发过高导致程序崩溃2. 如何解决2.1 利用 channel 的缓存区2.2 利用第三方库 3 调整系统资源的上限3.1 ulimit3.2 虚拟内存(virtual memory) 1.并发过高导致程序崩溃 看一个非常简单的例子: func main() {var wg sync.WaitG…

Linux -- gdb/cgdb的认识和使用

预备知识 程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g 出来的⼆进制程 序,默认是 release 模式。 要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候, 加上 -g 选项,如果没有添加&#x…

window 显示驱动开发-Direct3D 呈现性能改进(四)

调用资源创建、映射和取消映射函数的行为更改 对于 WDDM 1.3 及更高版本驱动程序实现的这些函数,Direct3D 运行时为映射默认方案提供一组受限的输入值。 这些受限值仅适用于支持功能级别 11.1 及更高版本的驱动程序。 CreateResource (D3D11) 函数— 这些输入 D3…

3.python操作mysql数据库

前言:在现代应用程序中,数据库扮演者至关重要的角色。mysql是一个流行的关系型数据库管理系统,广泛应用于各种规模的应用中。在pytho中,我们可以通过连接库与mysql数据库进行交互,实现数据的增删改查操作。与此同时&am…

day023-网络基础与OSI七层模型

文章目录 1. 网络基础知识点1.1 网络中的单位1.2 查看实时网速:iftop1.3 交换机、路由器 2. 路由表2.1 查看路由表的命令2.2 路由追踪命令 3. 通用网站网络架构4. 局域网上网原理-NAT5. 虚拟机上网原理6. 虚拟机的网络模式6.1 NAT模式6.2 桥接模式6.3 仅主机模式 7.…

DeepSeek智能对话助手项目

目录: 1、效果图2、实现代码3、温度和TopK的作用对比 1、效果图 2、实现代码 # import gradio as gr# def reverse_text(text): # return text[::-1]# demogr.Interface(fnreverse_text,inputs"text",outputs"text")# demo.launch(share&q…

视觉中国:镜头下的中国发展图景

2025年5月下旬,从北国草原到江南水乡,从文化遗产到科技创新,中国大地上演着一幕幕生机勃勃的图景。河北张家口的沙狐幼崽与湿地生态和谐共生,湖北襄阳的茶园雕琢出诗意田园;北京殷商文创的活力、沈阳文物情景剧的创意&…

LabVIEW 中内存释放相关问题

在LabVIEW 编程领域,内存管理是一个关键且复杂的议题。我们常常关注 LabVIEW 如何将内存释放回操作系统(OS),以及是否有方法确保在特定数据结构(如队列、变体属性、动态数据引用 DVR 等)销毁、删除或清空后…

基于正点原子阿波罗F429开发板的LWIP应用(4)——HTTP Server功能

说在开头 正点原子F429开发板主芯片采用的是STM32F429IGT6,网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2),采用的是RMII连接,PHY_ADDR为0;在代码中将会对不同的芯片做出适配。 CubeMX版本:6.6.1; F4芯片组…