使用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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82677.shtml
英文地址,請注明出處:http://en.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芯片組…