Libreoffice实现Word、Excel在线预览

news/2025/1/31 3:32:00/

Libreoffice下载地址

https://zh-cn.libreoffice.org/download/libreoffice/
在这里插入图片描述

依赖

  <!--jodconverter 核心包 --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-core</artifactId><version>4.4.6</version></dependency><!--springboot支持包,里面包括了自动配置类 --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.4.6</version></dependency><!--jodconverter 本地支持包 --><dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local-lo</artifactId><version>4.4.6</version></dependency>

代码

java">word">package com.dxy.util.excel;word">import java.io.File;
word">import org.jodconverter.core.office.OfficeException;
word">import org.jodconverter.local.JodConverter;
word">import org.jodconverter.local.office.LocalOfficeManager;word">public word">class JodConverterDemo {word">public word">static word">void main(String[] args) word">throws OfficeException {// 获取LibreOffice服务实例LocalOfficeManager instance = getInstance();word">try {// 启动服务, 注意:如果是Spring boot项目,只需要在项目启动时 start 一次即可instance.start();// docx 转 pdfFile srcFile1 = word">new File("D:\\test1.docx");File targetFile1 = word">new File("D:\\test1.pdf");JodConverter.convert(srcFile1).word">to(targetFile1).execute();// ppt 转 pdfFile srcFile2 = word">new File("D:\\test2.ppt");File targetFile2 = word">new File("D:\\test2.pdf");JodConverter.convert(srcFile2).word">to(targetFile2).execute();// excel 转 html, excel 转 pdf 效果不好File srcFile3 = word">new File("E:\\tmp\\user2.xlsx");File targetFile3 = word">new File("E:\\tmp\\user2.html");JodConverter.convert(srcFile3).word">to(targetFile3).execute();} word">finally {// 停止服务,demo中需要手动停止LibreOffice服务,不然项目无法退出,只能手动杀掉LibreOffice进程instance.stop();}}word">public word">static LocalOfficeManager getInstance() {LocalOfficeManager.Builder builder = LocalOfficeManager.builder().install();// 此处是 LibreOffice 的目录builder.officeHome("C:\\Program Files\\LibreOffice");// 指定 LibreOffice 服务的端口号,若要启动多个服务,则填写多个端口号builder.portNumbers(2000);// 转换超时时间builder.taskExecutionTimeout(60L * 1000);// 队列超时时间builder.taskQueueTimeout(1000 * 60 * 60L); // 1小时word">return builder.build();}
}

参考文章

https://blog.csdn.net/qq_33256826/article/details/136497411
https://blog.csdn.net/wolf_you/article/details/129858438


http://www.ppmy.cn/news/1568048.html

相关文章

【QT】 控件 -- 显示类

&#x1f525; 目录 [TOC]( &#x1f525; 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 &#x1f525; 1. 前言 之前我在上一篇文章【QT】…

基于Langchain-Chatchat + ChatGLM 本地部署知识库

一、相关环境 参考链接: Github:https://github.com/chatchat-space/Langchain-Chatchat Langchain-chatchat版本&#xff1a;v0.3.1 安装环境&#xff1a;Ubuntu&#xff1a;22.04&#xff0c;CUDA&#xff1a;12.1 二、搭建过程 2.1 环境配置 2.1.1 创建chatchat虚拟环…

linux如何修改密码,要在CentOS 7系统中修改密码

要在CentOS 7系统中修改密码&#xff0c;你可以按照以下步骤操作&#xff1a; 步骤 1: 登录到系统 在登录提示符 localhost login: 后输入你的用户名。输入密码并按回车键。 步骤 2: 修改密码 登录后&#xff0c;使用 passwd 命令来修改密码&#xff1a; passwd 系统会提…

RocketMQ 中如何实现消息的可靠传递?

引言 作为头部消息队列开源中间件&#xff0c;学习其中的技术方案并且总结可靠性和健壮性&#xff0c;提升我们的架构思维和解决问题的能力 。 在 RocketMQ 中实现消息的可靠传递可以从多个方面入手&#xff0c;涵盖生产者、Broker 以及消费者等不同环节。 生产者端 1. 同步…

【java学习笔记】@Autowired注解 使用方法和作用 | 配合@Component注解使用 | IOC控制反转

原本在类中&#xff0c;要用什么对象&#xff0c;就直接new一个对象。这种原始的方式 是由应用本身去控制实例的。 用了Autowired注解后&#xff0c;就相当于把实例&#xff08;对象&#xff09;的控制权 交给外部容器来统一管理&#xff08;降低耦合&#xff09;。&#xff08…

Java设计模式:结构型模式→组合模式

Java 组合模式详解 1. 定义 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构以表示“部分-整体”的层次。组合模式使得客户端能够以统一的方式对待单个对象和对象集合的一致性&#xff0c;有助于处理树形结构…

使用 Python 和 Tesseract 实现验证码识别

验证码识别是一个常见且实用的技术需求&#xff0c;尤其是在自动化测试和数据采集场景中。通过开源 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;工具 Tesseract&#xff0c;结合 Python 的强大生态&#xff0c;我们可以高效实现验证码识…

基于微信小程序的社团活动助手php+论文源码调试讲解

4 系统设计 4.1 系统设计主要功能 通过市场调研及咨询研究&#xff0c;了解了用户的使用需求&#xff0c;于是制定了管理员和用户模块。功能结构图如下所示&#xff1a; 图4-1系统功能结构图 4.2 数据库设计 4.2.1 数据库设计规范 数据可设计要遵循职责分离原则&#xff0c;即…