Springboot+Libreoffice集成开发

简介

LibreOffice 是一款功能强大的办公软件,默认使用开放文档格式 (OpenDocument Format , ODF), 并支持 *.docx, *.xlsx, *.pptx 等其他格式。
它包含了 Writer, Calc, Impress, Draw, Base 以及 Math 等组件,可用于处理文本文档、电子表格、演示文稿、绘图以及公式编辑。
它可以运行于 Windows, GNU/Linux 以及 macOS 等操作系统上,并具有一致的用户体验。

官网:链接
安装
SpringBoot word文档转pdf
centos7下安装LibreOffice

在线 - 安装

安装环境: centos7

# 查找yum源的安装包
& yum search libreoffice
# 查看Libreoffice版本
& yum info libreoffice# 安装
& yum install -y libreoffice# 建立软连接
ln -s /usr/bin/libreoffice7.0 /usr/bin/libreoffice# 测试word转PDF
& # 重启
/opt/libreoffice6.4/program/soffice --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &# 查看端口号
$ netstat -anop | grep 8100

在线 - 指定版本安装

下载地址:ibreoffice7.5.8

LibreOffice_7.5.8_Linux_x86-64_rpm_sdk.tar.gz
LibreOffice_7.5.8_Linux_x86-64_rpm.tar.gz

依赖

LibreOffice需要依赖libcairo.so.2,libcups.so.2,libSM.so.6 等yum install cairo -y
yum install cups-libs -y
yum install libSM -y
/
yum install cairo cups-libs libSM -y
  1. 创建安装目录
mkdir /opt/libreoffice
  1. 下载安装包到安装目录并解压
[root@top213 libreoffice]# ll
总用量 287672
LibreOffice_7.5.8_Linux_x86-64_rpm_sdk.tar.gz
LibreOffice_7.5.8_Linux_x86-64_rpm.tar.gz# 解压
tar -xvzf LibreOffice_7.5.8_Linux_x86-64_rpm_sdk.tar.gz
tar -xvzf LibreOffice_7.5.8_Linux_x86-64_rpm.tar.gz
  1. 安装
cd /opt/libreoffice/LibreOffice_7.5.8.2_Linux_x86-64_rpm/RPMS
yum localinstall -y *.rpm# 喝杯92年的白开水休息一会儿cd /opt/libreoffice/LibreOffice_7.5.8.2_Linux_x86-64_rpm_sdk/RPMS
yum localinstall -y *.rpm
  1. 查看是否安装成功
[root@localhost RPMS]# libreoffice7.5 --version
LibreOffice 7.5.8.2 f718d63693263970429a68f568db6046aaa9df01

测试

libreoffice7.5 --headless --convert-to pdf xxxx.docx#打印结果 convert /home/libreofficedemo/xxxx.docx -> /home/libreofficedemo/xxxx.pdf using filter : writer_pdf_Export

离线 - 安装(未成功过勿使用)

# 下载yumdownloadonly插件
yum install yum-plugin-downloadonly# 下载到指定目录(依赖包会一起下载)
yum install --downloadonly --downloaddir=/root/httpd httpdrpm -ivh *.rpm
rpm -Uvh update/*.rpm# 使用rpm命令升级软件包时,有时候可能会与原来的安装的软件版本冲突。添加参数替换掉已有文件
rpm -Uvh --replacefiles *.rpm

启动服务

libreoffice6.4 --headless --accept="socket,host=0.0.0.0,port=8100;urp;" --nofirststartwizard
或者
/opt/libreoffice6.4/program/soffice --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &netstat -nalp | grep 8100

停止服务

卸载软件

yum erase libreoffice\*
或者
yum remove openoffice.org* libreoffice.org*

Springboot集成Libreoffice

  • 添加依赖
 <!-- jodconverter  word转pdf --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-core</artifactId><version>4.2.2</version></dependency><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.2.2</version></dependency><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.2.2</version></dependency>
  • 添加配置
jodconverter:local:enabled: truemax-tasks-per-process: 10port-numbers: 8100office-home: ${office-home} # 这里填写安装目录
  • 核心代码
# 引入依赖
@Autowired
private DocumentConverter documentConverter;# 核心代码public MultipartFile docToPdf(MultipartFile file) {try {long old = System.currentTimeMillis();ByteArrayOutputStream os = new ByteArrayOutputStream();documentConverter.convert(file.getInputStream()).as(DefaultDocumentFormatRegistry.DOC).to(os).as(DefaultDocumentFormatRegistry.PDF).execute();long now = System.currentTimeMillis();log.info("doc转pdf耗时" + ((now - old) / 1000.0) + "秒");MultipartFile files = new MockMultipartFile("file", file.getName() + ".pdf", null, os.toByteArray());return files;} catch (Exception e) {e.printStackTrace();}return null;}

异常

1.Word转PDF后文字位置错乱

原来一直使用centos自带版本,后使用解压版后程序中指定安装目录后,解决此问题

2. Word转PDF 中文乱码

首次安装没有中文字体支持

# 检查系统中是否支持中文字体
fc-list
# 终端输入:yum -y install cups-libs fontconfig
# 成功后,在/usr/share目录就可以看到fonts和fontconfig目录了(之前是没有的)# 在window上将中文字体上传到libreoffice安装目录 /share/fonts/lll/
重启libreoffice

2. Could not read embedded OTF for font BCDEEE+MicrosoftYaHei

3. /lib64/libc.so.6: version `GLIBC_2.14’ not found

[root@top213 /]# libreoffice6.4 --headless --accept="socket,host=0.0.0.0,port=8100;urp;" --nofirststartwizard
/opt/libreoffice6.4/program/oosplash: /lib64/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /opt/libreoffice6.4/program/oosplash)
/opt/libreoffice6.4/program/oosplash: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/libreoffice6.4/program/oosplash)
/opt/libreoffice6.4/program/oosplash: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /opt/libreoffice6.4/program/libuno_sal.so.3)
/opt/libreoffice6.4/program/oosplash: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/libreoffice6.4/program/libuno_sal.so.3)# 问题: /lib64/libc.so.6: version `GLIBC_2.14' not found# 1. 下载上传并解压
http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz # 2. 解压
tar -zxvf  glibc-2.15.tar.gz
tar -zxvf  glibc-ports-2.15.tar.gz
mv glibc-ports-2.15 glibc-2.15/ports
mkdir glibc-build-2.15    
cd glibc-build-2.15   
../glibc-2.15/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221235.shtml

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

相关文章

垃圾回收 (GC) 在 .NET Core 中是如何工作的?

提起GC大家肯定不陌生&#xff0c;但是让大家是说一下GC是怎么运行的&#xff0c;可能大多数人都不太清楚&#xff0c;这也很正常&#xff0c;因为GC这东西在.NET基本不用开发者关注&#xff0c;它是依靠程序自动判断来释放托管堆的&#xff0c;我们基本不需要主动调用Collect(…

【论文阅读】O’Reach: Even Faster Reachability in Large Graphs

Hanauer K, Schulz C, Trummer J. O’reach: Even faster reachability in large graphs[J]. ACM Journal of Experimental Algorithmics, 2022, 27: 1-27. Abstract 计算机科学中最基本的问题之一是可达性问题&#xff1a;给定一个有向图和两个顶点s和t&#xff0c;s可以通过…

C++进阶学习:map和set的实现

我们知道set和map的底层其实是红黑树&#xff0c;在学习完红黑树这个数据结构之后&#xff0c;我们开始简单模拟实现一下这两个STL容器 目录 1.set和map的泛型编程思想 2.红黑树的结构 2.1.迭代器的实现 2.2.迭代器的 operator 2.3.迭代器的代码 2.4.set和map迭…

资产管理系统部署及库存告警

1.需求&#xff1a;对电脑&#xff0c;办公设备&#xff0c;耗材等做资产盘点和整理&#xff0c;并对库存预警。 2.选型&#xff1a;snipeit 3.部署 #!/bin/bash docker run -d -p 80:80 --name"snipeit" --env-filesnipeit.env --mount sourcesnipe-vol,dst/var/l…

鸿蒙OS应用开发之文本输入组件

前面学习了按钮组件的输入方式,它只能响应触摸输入,或者点击输入,而不能实现文本的输入,虽然它是主流的操作方式,但是很多时候还是需要文本的输入。比如登录邮箱需要输入用户帐号和密码,网上购物需要输入地址和电话号码等等。应用对这样的需求,就需要使用文本输入组件,…

【算法系列篇】递归、搜索和回溯(三)

文章目录 前言什么是二叉树剪枝1. 二叉树剪枝1.1 题目要求1.2 做题思路1.3 代码实现 2. 验证二叉搜索树2.1 题目要求2.2 做题思路2.3 代码实现 3. 二叉搜索树中第k小的元素3.1 题目要求3.2 做题思路3.3 代码实现 4. 二叉树的所有路径4.1 题目要求4.2 做题思路4.3 代码实现 前言…

(八)数组和函数实践:扫雷游戏

目录 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 1.2 游戏的分析和设计 1.2.1 数据结构的分析 1.2.2 文件结构设计 2. 扫雷游戏的代码实现 3. 如何生成用户版本 4. 完整的排雷程序 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 1&#xff09;使用控制台实现经典…

数据结构和算法-栈

数据结构和算法-栈 文章目录 数据结构和算法-栈1. 栈的介绍2. 栈的应用场景3. 栈的快速入门3.1 用数组模拟栈3.2 课堂作业-用链表模拟栈 4. 栈实现综合计算器4.1 课堂作业-加入小括号5. 栈的三种表达式-**前缀、中缀、后缀表达式(逆波兰表达式)**5.1 前缀表达式(波兰表达式)5.1…

中低压MOS 适用于电子烟等产品—— 较小的开关损耗 过流能力好

工作原理&#xff1a; 当用户在吸嘴处抽吸时&#xff0c;气流经过进气孔&#xff0c;穿 过电路板上方的咪头&#xff0c;咪头即产生电信号&#xff0c;驱 动芯片板&#xff0c;让电池供电给雾化芯&#xff0c;雾化芯中的 发热丝将电能转化成热能&#xff0c;当温度达到雾化液…

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;可以将链表转为数组&#xff0c;然后从后往前遍历&#xff0c;遇到大于等于当前元素的就入栈&#xff0c;最终栈里面的元素即是最终的答案。解题思路二&#xff1a;递归&am…

【一步到位】汽车过户全攻略:轻松搞定,告别繁琐流程

校长车行是一家昆明二手车代办公司&#xff0c;今天我们要聊一聊一个让很多人头疼的问题——汽车过户。相信很多朋友在购买二手车或者需要将车辆转让给他人时&#xff0c;都会遇到这个繁琐的流程。那么&#xff0c;如何才能轻松搞定汽车过户呢&#xff1f;接下来&#xff0c;就…

(0-1)分布

假设离散型随机变量X只可能取到0、1两个值&#xff0c;它的分布律为&#xff1a; &#xff0c;其中&#xff0c; 那么称X服从参数为p的0-1分布&#xff0c;也叫两点分布。 其实上面公式就是将下面两个式子写在一起&#xff1a;

【Hive_02】查询语法

1、基础语法2、基本查询&#xff08;Select…From&#xff09;2.1 全表和特定列查询2.2 列别名2.3 Limit语句2.4 Where语句2.5 关系运算函数2.6 逻辑运算函数2.7 聚合函数 3、分组3.1 Group By语句3.2 Having语句3.3 Join语句&#xff08;1&#xff09;等值与不等值Join&#x…

SUPER-ADAM: Faster and Universal Framework of Adaptive Gradients

这周看了啥&#xff1a; 本周主要来看看别人是如何证明收敛的&#xff0c;围绕算法SUPER-ADAM 的更新过程和论文后面的证明&#xff0c;&#xff08;这篇证明比上周的亲切多了&#xff0c;我哭死&#xff09;仔细看了证明每一步的推导&#xff08;至于作者如何想出的&#xff…

verilog基础语法之比较器

逻辑运算符以及逻辑电路概述 逻辑运算符常用于条件判断语句&#xff0c;输出为布尔值True/False。逻辑运算符是基于比较器构造的。比较器电路是产生逻辑比较的本质&#xff1b;比较器电路的复杂度与位宽和比较类型相关&#xff1b;一般情况下可以先构造基本比较器&#xff0c;…

原生Html 引入element UI + vue3 表单校验设置

效果&#xff1a; 提交时&#xff0c;检验结果展示 html源码 <!DOCTYPE html> <html> <!--带搜索输入框下拉弹窗 --> <head><meta charset"UTF-8"><!-- import Vue before Element --><script src"../js/vue3.3.8/vu…

iOS IDFV特点

从AppStore下载的APP的表现 在 AppStore 下载的APP具有以下特征&#xff1a; 同一厂商&#xff08;即同一个开发者帐号&#xff09;在一个iOS设备上的APP的IDFV相同&#xff1b;同一厂商在不同iOS设备上的APP的IDFV不同&#xff1b;不同厂商在同一iOS设备上的APP的IDFV不同&a…

短视频电商模式,是否会成为未来电商的主流?

我是电商珠珠 随着电商的发展&#xff0c;短视频也逐渐开拓电商市场。其中最热门的短视频APP-抖音在19年的时候&#xff0c;发展起了自己的电商平台-抖音小店。 它的兴趣电商模式&#xff0c;区别于传统电商&#xff0c;实现了既可以让用户搜索下单&#xff0c;又可以在刷视频…

jmeter,通过Ant插件生成html报告,展示接口详细信息

一、下载Ant 下载地址&#xff1a;Apache Ant - 二进制发行版 二、安装 1、Ant环境变量 解压Ant目录&#xff1b;配置系统环境变量&#xff0c;添加ANT_PATH&#xff0c;值为D:\Software\Ant_plugIn\apache-ant-1.10.14配置系统环境变量Path&#xff0c;添加Ant路径 %ANT_H…

Unity之OpenXR+XR Interaction Toolkit接入Meta Quest3

前言 随着备受期待的Meta Quest 3与今年10月10日发布,这款来自Meta的下一代VR游戏头戴设备承诺将彻底改变您的游戏方式。 Meta Quest 3,玩家只需轻松一触即可在虚拟现实和真实世界之间无缝切换,无需摘下头戴设备进行快速现实检查。 Meta Quest 3最引人注目的特点之一是其能…