Spring boot 文档格式转换 Cent OS 7安装LibreOffice碰壁记录

概要

Spring boot后端,有个转换Doc、Docx文档为PDF的需求,考察各类文章和实践之后得出结论,纯Java内部实现的免费的质量较差,且无法实现Doc转换PDF功能,收费框架效果好但是需要购买授权或是找办法破解。最后选择使用外部Office框架,后端调用的方式。

初步对接

最开始选择的Java框架是jodconverter。外部Office框架是OpenOffice,查资料知道这是Apache基金会的,看起来就很不错,在Cent OS 7上也很好安装,参考这个文章。实际的运行效果也不错,没有任何依赖问题,非常顺利,文档转换也很成功。

但是在后续的开发中,遇到一个问题,使用Docx4j进行文档模板解析并构建新文档(参考文章,主要就是WordUtil类的replaceVariable方法),然后拿这个文档去转换PDF,得到的PDF会发生结构错误。

经过排查最后发现,Docx4j构建出的这个文档,用Microsoft Office、WPS等在Windows上常用的Office软件打开查看没有任何问题,但是用Open Office打开查看就只会显示错乱的结构,导致生成的PDF一样变成乱码,不知道是文档问题还是Open Office的问题,最后只能切换到LibreOffice作为外部Office。

LibreOffice安装问题

参考了许多在Cent OS 7 上安装LibreOffice的文章(例如这个),但发生了系统缺少相关依赖、GCC版本过低等问题。缺少依赖比较好解决,但是更新GCC实在不敢随便更新,Cent OS 7太老了。

最后发现一个解决方法,本质上LibreOffice需要较高的GCC版本,原因是我安装的LibreOffice版本是最新版本,只要安装较为老旧的版本,相应依赖环境也会随之降低,最后降低到LibreOffice 5.3.6.1后,成功把LibreOffice安装到Cent OS 7上,且没有依赖问题。

Yum 安装 LibreOffice问题

我发现很多Cent OS 7安装LibreOffice的文章,都会有安装libreoffice-headless这一步,我发现这貌似就是直接给你安装了一个可以用的LibreOffice,而且是5.3.6.1版本,也就是直接执行

yum install -y libreoffice-headless

通常还需要安装这个

yum install -y libreoffice-writer

此时就会安装一个低版本的Libreoffice,很多博客要求使用rpm安装,然后又安装libreoffice-headless,这实际上会在系统里安装两个版本的LibreOffice,而且起效果的应该是libreoffice-headless,也就是LibreOffice 5.3.6.1版本

rpm安装的LibreOffice通常都是最新版本(不会就我用的最新版本走进坑里了?),这个版本的LibreOffice,Cent OS 7通常是执行不了的

这个libreoffice-headless,我实在是没找到最开始是哪个文章开始这么做的,查阅外网和官网也没看到。

LibreOffice Docker安装

这个可能是最好搞的办法了,有专门维护的镜像,可以尝试使用docker运行,应该不会有问题(我没试过),不过在jodconverter的对接上就需要使用远程对接方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值