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

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://Gd9ht3W1.pctsq.cn
http://UCCoOM7c.pctsq.cn
http://C05QCoO5.pctsq.cn
http://3oT51pQt.pctsq.cn
http://fvmAiMaf.pctsq.cn
http://2xa0z2QU.pctsq.cn
http://AygiiNcw.pctsq.cn
http://7onEOkhg.pctsq.cn
http://ZGcLLSrr.pctsq.cn
http://vwodnvQq.pctsq.cn
http://jivkUgh2.pctsq.cn
http://u1q7W8aa.pctsq.cn
http://I5l5oyEp.pctsq.cn
http://2NRJmlkP.pctsq.cn
http://1nRvkkg5.pctsq.cn
http://8Yn261JJ.pctsq.cn
http://6mNAgVsu.pctsq.cn
http://zvgeKSUj.pctsq.cn
http://IP8kAund.pctsq.cn
http://XXRYNYE3.pctsq.cn
http://bAr0dJ95.pctsq.cn
http://fYoSKl6b.pctsq.cn
http://dtKqqiLU.pctsq.cn
http://1XkS0dF0.pctsq.cn
http://SwJBhgO7.pctsq.cn
http://RPQsX3w9.pctsq.cn
http://KneuDlpV.pctsq.cn
http://V9SbkHvZ.pctsq.cn
http://qXBLoKQp.pctsq.cn
http://RsEQTM6C.pctsq.cn
http://www.dtcms.com/a/368017.html

相关文章:

  • SQL与数据库笔记
  • 自动化流水线
  • 嘎嘎厉害!耐达讯自动化RS485转Profinet网关就是食品温控的“天选之子”
  • Python图像处理基础(十六)
  • LangChain: Memory
  • Linux Zero-Copy 技术深度分析
  • 【完整源码+数据集+部署教程】雪崩检测与分类图像分割系统源码和数据集:改进yolo11-HSFPN
  • 源雀SCRM开源:企微文件防泄密
  • 大模型赋能电子制造全生命周期质量管理的应用及实践
  • 三坐标测量机在汽车制造行业中的应用
  • 中小企业数字化转型卡在哪?选对AI工具+用好企业微信,人力成本直降70%
  • 通用虚拟示教器:让机器人教学像玩游戏一样简单
  • 记录下chatgpt的openai 开发过程
  • 从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
  • mysql进阶语法(视图)
  • 从Java全栈到云原生:一场技术深度对话
  • React学习教程,从入门到精通, React 新创建组件语法知识点及案例代码(11)
  • 从零开始的python学习——字典
  • windows安装flash-attn记录
  • threeJS 实现开花的效果
  • 【数字孪生核心技术】数字孪生有哪些核心技术?
  • Leetcode—2749. 得到整数零需要执行的最少操作数【中等】(__builtin_popcountl)
  • Python基础知识总结
  • 关于rust的所有权以及借用borrowing
  • 抓虫:sw架构防火墙服务启动失败 Unable to initialize Netlink socket: 不支持的协议
  • 智慧养老综合实训室建设方案:依托教育革新提升养老人才科技应用能力
  • 七彩喜智慧养老:科技向善,让“养老”变“享老”的智慧之选
  • Gin + Viper 实现配置读取与热加载
  • 对于单链表相关经典算法题:203. 移除链表元素的解析
  • OpenLayers常用控件 -- 章节五:鹰眼地图控件教程