jodconverter將word轉pdf底層libreoffice的問題

近期項目中使用了word轉pdf的功能,其中借助了遠程服務的jodconverter來處理。

<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-remote</artifactId><version>4.4.2</version>
</dependency>

jodconverter官網鏈接

https://jodconverter.github.io/jodconverter/4.4.11/

其中提供了docker-image-jodconverter-examples這個項目來生成鏡像,提供對外服務

https://github.com/jodconverter/docker-image-jodconverter-examples

目前官網有rest版和gui版,rest版只是外部網絡調用,gui版提供頁面傳入文件然后下載(對中文支持不友好)。

底層庫通過libreoffice來進行轉換(還有apache的openoffice,但是這個版本更新慢)。

鏡像版本介紹

https://github.com/jodconverter/docker-image-jodconverter-examples/pkgs/container/jodconverter-examples

鏡像發布情況

https://github.com/jodconverter/docker-image-jodconverter-examples/releases

項目中使用發現,截止到2025.09.05,鏡像底層使用的libreoffice未及時更新,還是7.x版本。對應如下介紹

https://github.com/jodconverter/docker-image-jodconverter-runtime

由于7.x版本中針對word轉pdf時刪除線渲染有問題,升級到新版本后此問題消失,所以需要升級libreoffice的版本。

鑒于jodconverter鏡像的特殊性,考慮到了使用docker鏡像掛載宿主機的libreoffice來處理。不然的話需要將官方的鏡像重新打包處理,這個相對宿主機而言麻煩一些。后續可以考慮使用鏡像來處理。

libreoffice官網下載

https://downloadarchive.documentfoundation.org/libreoffice/old/

libreoffice具體版本下載

https://mirror1.cs-georgetown.net/tdf/libreoffice/stable/25.8.1/deb/x86_64/LibreOffice_25.8.1_Linux_x86-64_deb.tar.gz

下載下來文件后將文件進行解壓。

安裝前檢查一下是否安裝過libreoffice,如果存在需要刪除,防止出現問題。

目前機器操作系統使用了ubuntu,使用如下命令

# 1. 確認是否安裝
dpkg -l | grep openoffice# 2. 徹底刪除
sudo apt purge 軟件包名稱# 3. 清理殘留依賴
sudo apt autoremove

后面再逐個安裝軟件包,依賴情況如下

軟件包名

依賴軟件包名

libobasis25.8-core_25.8.1.1-1_amd64.deb

libreoffice25.8-ure_25.8.1.1-1_amd64.deb

libobasis25.8-ooofonts_25.8.1.1-1_amd64.deb

libreoffice25.8_25.8.1.1-1_amd64.deb

libobasis25.8-images_25.8.1.1-1_amd64.deb

libreoffice25.8-calc_25.8.1.1-1_amd64.deb

libobasis25.8-calc

libreoffice25.8-draw_25.8.1.1-1_amd64.deb

libobasis25.8-draw

libreoffice25.8-en-us_25.8.1.1-1_amd64.deb

libobasis25.8-en-us_25.8.1.1-1_amd64.deb

libreoffice25.8-impress_25.8.1.1-1_amd64.deb

libobasis25.8-impress

libreoffice25.8-math_25.8.1.1-1_amd64.deb

libobasis25.8-math_25.8.1.1-1_amd64.deb

libreoffice25.8-writer_25.8.1.1-1_amd64.deb

libobasis25.8-writer_25.8.1.1-1_amd64.deb

libobasis25.8-librelogo_25.8.1.1-1_amd64.deb

libobasis25.8-pyuno

其他軟件包無依賴,安裝中如果遇到問題需要具體排查處理。

如下命令安裝即可

sudo dpkg -i 軟件包名

安裝錯誤以及對應軟件包

錯誤名

執行命令

error while loading shared libraries: libXinerama.so.1: cannot open shared object file: No such file or directory

sudo apt install libxinerama1

error while loading shared libraries: libsmime3.so: cannot open shared object file: No such file or directory

sudo apt install libnss3

error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory

sudo apt install libcairo2

error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory

sudo apt install libcups2 libx11-xcb1

安裝完libreoffice后默認安裝在如下位置

/opt/libreoffice版本號

字體安裝

查看安裝源

root@VM-8-7-debian:~# cat /etc/apt/sources.list                                                                                                                                                                                                                             
deb http://mirrors.tencentyun.com/debian bookworm main contrib non-free non-free-firmware                                                                                                                                                                                   
#deb-src http://mirrors.tencentyun.com/debian bookworm main contrib non-free non-free-firmware                                                                                                                                                                              
deb http://mirrors.tencentyun.com/debian bookworm-updates main contrib non-free non-free-firmware                                                                                                                                                                           
#deb-src http://mirrors.tencentyun.com/debian bookworm-updates main contrib non-free non-free-firmware                                                                                                                                                                      
deb http://mirrors.tencentyun.com/debian-security/ bookworm-security main contrib non-free-firmware                                                                                                                                                                         
#deb-src http://mirrors.tencentyun.com/debian-security/ bookworm-security main contrib non-free-firmware 

確保返回的數據中main后有對應的數據,不然字體會下載不下來。

字體安裝

sudo apt install fonts-noto-cjk fonts-noto-core fonts-dejavu fonts-liberation fonts-wqy-zenhei fonts-wqy-microhei 
sudo apt install ttf-mscorefonts-installer

進入jodconverter鏡像得知,libreoffice實際在如下位置

/usr/lib/libreoffice

最終docker命令如下

docker run -v /usr/share/fonts:/usr/share/fonts:ro -v /opt/libreoffice24.8:/usr/lib/libreoffice -d --memory 512m -p 8100:8080 ghcr.io/jodconverter/jodconverter-examples:rest
  • 宿主機字體對應docker的字體目錄

  • 宿主機libreoffice對應docker的libreoffice目錄

  • 宿主機8100端口對應docker的8080,內部是一個java web項目,通過8080調用libreoffice進行文件格式轉換處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921829.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921829.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921829.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【為YOLOv11Seg添加MFC界面】詳細指南

要將現有的YOLOv11Seg代碼集成到MFC界面中,我們需要創建一個MFC應用程序框架,并將現有的檢測邏輯封裝到其中。以下是詳細步驟: 1. 創建MFC應用程序框架 1.1 使用Visual Studio創建MFC項目 打開Visual Studio,選擇"創建新項目" 選擇"MFC應用程序"模板…

機器學習03——線性模型(多元線性回歸、對數線性回歸、二分類、線性判別分析)

上一章&#xff1a;機器學習02——模型評估與選擇 下一章&#xff1a;機器學習04——決策樹 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、線性模型的基本形式&#xff08;一…

qt QLineSeries詳解

1、概述QLineSeries是Qt Charts模塊中的一個重要類&#xff0c;用于繪制折線圖。它是QXYSeries的實現類&#xff0c;將信息顯示為由直線連接的一系列數據點。該類為QAbstractSeries的子類&#xff0c;因此可以通過該類來訪問QAbstractSeries的所有公共方法和屬性。2、重要方法c…

你再也找不到更詳細的3DGS教程了 —— 一萬九千字長文解析3DGS

參考: https://www.bilibili.com/video/BV1MF4m1V7e3/ https://blog.csdn.net/2401_86810419/article/details/148811121 https://www.bilibili.com/video/BV1cz421872F?t=233.9 https://wuli.wiki/online/SphHar.html https://zhuanlan.zhihu.com/p/467466131 特別指出…

Python,遺傳算法與神經網絡架構搜索:基于DEAP的自動模型設計

引言&#xff1a;當進化論遇見深度學習——自動化的黎明在深度學習的蠻荒時代&#xff0c;我們是“手工匠人”。我們依靠直覺、前輩的經驗&#xff08;ResNet 為什么是152層而不是153層&#xff1f;&#xff09;、大量的試錯以及那么一點點玄學&#xff0c;在架構的黑暗森林中摸…

Vue框架技術詳解——項目驅動概念理解【前端】【Vue】

Vue3框架 是前端渲染框架瀏覽器向服務器第一次發送請求&#xff0c;就會將所有頁面的樣式全部返回到瀏覽器vue中會將所有js文件最后打包成一個js文件&#xff0c;當前訪問其中一個頁面時&#xff0c;其他頁面的樣式也已經返回到瀏覽器中了&#xff0c;下次切換頁面時&#xff…

HTML 網頁靜態托管 API 接口文檔(可集成到智能體Agent)

HTML 網頁靜態托管 API 接口文檔&#xff08;可集成到智能體Agent&#xff09; 接口概述 本接口用于將HTML代碼轉換為可訪問的網頁&#xff0c;支持通過API密鑰進行身份驗證。 API 密鑰申請地址&#xff1a; https://www.cuobiezi.net/user/api_keys/apply API接口信息 接…

springboot vue sse消息推送,封裝系統公共消息推送前后端方法

概述 1、封裝springboot全局的消息推送接口&#xff1b; 注&#xff1a;1&#xff09;由于原生HTML5 EventSource 不支持添加header&#xff0c;所以要把連接創建接口加入身份驗證白名單&#xff0c;并在接口內添加自己校驗token2&#xff09;后臺需定時心跳&#xff0c;保證鏈…

LeetCode 每日一題 2025/9/1-2025/9/7

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄9/1 1792. 最大平均通過率9/2 3025. 人員站位的方案數 I9/3 3027. 人員站位的方案數 II9/4 3516. 找到最近的人9/5 2749. 得到整數零需要執行的最少操作數9/6 3495. 使數組元…

小迪安全v2023學習筆記(八十講)—— 中間件安全WPS分析WeblogicJenkinsJettyCVE

文章目錄前記服務攻防——第八十天中間件安全&HW2023-WPS分析&Weblogic&Jetty&Jenkins&CVE應用WPS - HW2023-RCE&復現&上線CS介紹漏洞復現中間件 - Weblogic-CVE&反序列化&RCE介紹利用中間件 - Jenkins-CVE&RCE執行介紹漏洞復現CVE-20…

各webshell管理工具流量分析

哥斯拉哥斯拉是一個基于流量、HTTP全加密的webshell管理工具 特點 1.內置了3種Payload以及6種加密器&#xff0c;6種支持腳本后綴&#xff0c;20個內置插件 2.基于java&#xff0c;可以跨平臺使用 3.可以自己生成webshell&#xff0c;根據管理來生成一些payload&#xff0c;然后…

pytest(1):fixture從入門到精通

pytest&#xff08;1&#xff09;&#xff1a;fixture從入門到精通前言1. Fixture 是什么&#xff1f;為什么我們需要它&#xff1f;2. 快速上手&#xff1a;第一個 Fixture 與基本用法3. 作用域 (Scope)&#xff1a;控制 Fixture 的生命周期4. 資源管理&#xff1a;Setup/Tear…

Java17 LTS 新特性用例

基于 Java 17 LTS 的 實用示例 以下是基于 Java 17 LTS 的 30 個實用示例,涵蓋語言新特性、API 改進及常見場景。所有代碼均兼容 Java 17 語法規范。 文本塊(Text Blocks) String json = """{"name": "Java 17","type": &qu…

SpringBoot-Web開發-內容協商——多端內容適配內容協商原理HttpMessageConverter

其它篇章&#xff1a; 一&#xff1a;SpringBoot3-日志——日志原理&日志格式&日志級別&日志分組&文件輸出&文件歸檔&滾動切割 二&#xff1a;SpringBoot3-Web開發-靜態資源——WebMvcAutoConfiguration原理&資源映射&資源緩存&歡迎頁&…

Spring MVC 類型轉換與參數綁定:從架構到實戰

在 Spring MVC 開發中&#xff0c;“前端請求數據” 與 “后端 Java 對象” 的格式差異是高頻痛點 —— 比如前端傳的String類型日期&#xff08;2025-09-08&#xff09;要轉成后端的LocalDate&#xff0c;或者字符串male要轉成GenderEnum.MALE枚舉。Spring 并非通過零散工具解…

Spark提交任務的資源配置和優化

Spark 提交任務時主要可調的資源配置參數包括 Driver 資源&#xff08;內存、CPU&#xff09;、Executor 資源&#xff08;數量、內存、CPU&#xff09;以及 集群管理相關參數。配置和優化時一般結合集群硬件資源、數據規模、作業類型和作業復雜度&#xff08;SQL / 機器學習&a…

機器學習06——支持向量機(SVM核心思想與求解、核函數、軟間隔與正則化、支持向量回歸、核方法)

上一章&#xff1a;機器學習05——多分類學習與類別不平衡 下一章&#xff1a;機器學習07——貝葉斯分類器 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、間隔與支持向量&…

AI集群全鏈路監控:從GPU微架構指標到業務Metric關聯

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 引言&#xff1a;AI算力時代的監控挑戰 隨著深度學習模型規模的指…

K8s Ingress Annotations參數使用指南

Kubernetes Ingress Annotations 是與特定 Ingress 控制器&#xff08;如 Nginx、Traefik、HAProxy 等&#xff09;配合使用&#xff0c;用于擴展和定制 Ingress 資源行為的關鍵配置項。它們通常以鍵值對的形式添加在 Ingress 資源的 metadata部分。Ingress Annotations參數速查…

CodeBuddy Code深度實戰:從零構建智能電商推薦系統的完整開發歷程

項目背景與挑戰作為一名有著多年全棧開發經驗的技術人員&#xff0c;我最近接手了一個具有挑戰性的項目&#xff1a;為某中型服裝電商平臺開發一套智能商品推薦系統。該系統需要在2個月內完成&#xff0c;包含以下核心功能&#xff1a;前端&#xff1a;React TypeScript構建的…