1、简介

有时候我们需要在程序中使用到office的转换和预览功能,本文就针对这个需求记录了较为简单的office转换和功能:jodconverter。当然也有aspose和其他开源第三方(kkfileview),jodconverter是免费的,aspose需要付费。

2、SpringBoot集成jodconverter实战

2.1、首先下载好OpenOffice或LibreOffice,并在pom.xml引入相关依赖

<!--转换工具-->

<dependency>

  <groupId>org.jodconverter</groupId>

  <artifactId>jodconverter-spring-boot-starter</artifactId>

  <version>4.4.2</version>

</dependency>

<dependency>

  <groupId>org.jodconverter</groupId>

  <artifactId>jodconverter-local</artifactId>

  <version>4.4.2</version>

</dependency>

<dependency>

  <groupId>org.jodconverter</groupId>

  <artifactId>jodconverter-core</artifactId>

  <version>4.4.2</version>

</dependency>

2.2、在application.yml设置相关参数

jodconverter:

local:

enabled: true

# libreOffice根目录

officeHome: E:\soft\libreoffice

# 任务执行的超时时间

taskExecutionTimeout: 86400000

# 任务队列的超时时间

taskQueueTimeout: 86400000

# 端口(线程)

portNumbers: [2001,2002,2003]

# 一个进程的超时时间

processTimeout: 86400000

2.3、代码

@RequestMapping(value = "/preview")

@ResponseBody

public void preview(MultipartFile file, HttpServletResponse response) {

  if (file == null) {

    return;

  }

  InputStream inputStream = null;

  OutputStream outputStream = null;

  try {

    inputStream = file.getInputStream();

    outputStream = response.getOutputStream();

    String fileName = file.getOriginalFilename();

    if (StrUtil.endWithAnyIgnoreCase(fileName, ".doc", ".docx", ".xls", ".xlsx", ".csv", ".ppt", ".pptx")) {

      //转为PDF

      documentConverter.convert(inputStream).to(outputStream)

        .as(documentConverter.getFormatRegistry().getFormatByExtension("pdf")).execute();

    } else if (StrUtil.endWithAnyIgnoreCase(fileName, ".pdf", ".txt", ".xml", ".md", ".json", ".html", ".htm",

      ".gif", ".jpg", ".jpeg", ".png", ".ico", ".bmp")) {

      IoUtil.copy(inputStream, outputStream);

    } else {

      outputStream.write("暂不支持预览此类型附件".getBytes());

    }

  } catch (IORuntimeException e) {

    log.error("附件预览IO运行异常:{}", e.getMessage());

  } catch (IOException e) {

    log.error("附件预览IO异常:{}", e.getMessage());

  } catch (OfficeException e) {

    log.error("附件预览Office异常:{}", e.getMessage());

  } finally {

    IOUtils.closeQuietly(inputStream);

  }

  IoUtil.writeUtf8(outputStream, true);

}

2.4、效果演示

  2.4.1、在浏览器输入http://ip地址:端口号/file/index。

  2.4.2、上传附件,点击“选择文件”上传需要转换文件。

  2.4.3、点击“预览”,效果如下

SpringBoot使用libreoffice转换PDF的更多相关文章

  1. libreoffice转换文件为pdf文件乱码问题解决办法

    最近系统需要一个office文件预览功能 解决方案为使用libreoffice将office文件转换为pdf文件,然后使用swftools将pdf文件转换为swf文件 最后在前台使用flexpaper ...

  2. 利用LibreOffice转换ppt、doc转化pdf

    利用LibreOffice转换ppt.doc转化pdf LibreOffice下载地址:  http://www.libreoffice.org/download/libreoffice-fresh/ ...

  3. [错误解决] Libreoffice转换不成功,直接不做任何操作

    问题描述: Libreoffice在版本5.3.0之前都存在这个问题.现象是:当你运行其中一个LibreOffice的时候,再运行另外一个Libreoffice转换时,将不做任何操作. 解决方案: 如 ...

  4. SharePoint 2013 Word 转换PDF服务介绍及示例

    前言:在SharePoint使用过程中,经常会发现将文档进行格式转换的需求,之前,看到SharePoint 2013有将PPT转换PDF文档的服务,后来,才发现SharePoint 2010开始,就有 ...

  5. SharePoint Word 转换PDF服务介绍及示例

    前言:在SharePoint使用过程中,经常会发现将文档进行格式转换的需求,之前,看到SharePoint 2013有将PPT转换PDF文档的服务,后来,才发现SharePoint 2010开始,就有 ...

  6. python3图片裁剪+转换pdf+压缩

    本地大量长图,要发送给别人,所以要对图片进行裁剪+转换pdf+压缩 import zipfile import os from concurrent.futures import ThreadPool ...

  7. 将页面内容转换Pdf\Word\Excel格式

    项目中用到了将邮件内容转换为Pdf.Word.Excel格式,做为邮件附件发送. 查了一些解决方案,走了一些弯路.以此代码记录下. 转换PDF需要下载NReco.PdfGenerator.dll 以下 ...

  8. openoffice excel word 转换pdf 支持本地调用和远程调用

    OpenOffice.org 是一套跨平台的办公室软件套件,能在Windows.Linux.MacOS X (X11)和 Solaris 等操作系统上执行.它与各个主要的办公室软件套件兼容.OpenO ...

  9. 文件在线预览doc,docx转换pdf(一)

    文件在线预览doc,docx转换pdf(一) 1. 前言 文档转换是一个是一块硬骨头,但是也是必不可少的,我们正好做的知识库产品中,也面临着同样的问题,文档转换,精准的全文搜索,知识的转换率,是知识库 ...

随机推荐

  1. Linux 源码编译安装软件

    程序包编译安装的步骤: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 1.编译源码的项目工具 使用相关的 ...

  2. linux shell的配置文件执行顺序

    shell配置文件的作用:初始化环境变量.设置命令提示符.指定系统命令路径等 shell配置文件分类: (1)系统级别配置文件: /etc下,比如/etc/profile./etc/bashrc (2 ...

  3. Linux YUM 配置源

    Linux Yum 简介 YUM是交互式的以rpm为基础的软件包管理工具.YUM可以根据仓库的元数据信息,去自动的实现系统更新,包括依赖性分析,过期软件包处理.我们也可以利用yum来进行软件安装,删除 ...

  4. Tomcat深入浅出——Servlet(三)

    零.HttpServletRequest 上一篇已经介绍了这个接口,现在补充些内容 首先介绍一下作用域: jakarta.servlet.jsp.PageContext pageContext 页面作 ...

  5. 2022-7-9 html 第七组 刘昀航

    ​ 一.基础认知 1.1 认识网页 网页的组成: 文字.图片.音频.视频.超链接 网页背后的本质:前端程序员写的代码 前端的代码通过什么软件转换成用户眼中的页面:浏览器转化(解析和渲染) 1.2 5大 ...

  6. Unity3D学习笔记9——加载纹理

    目录 1. 概述 2. 详论 2.1. Resources方式 2.2. API方式 2.3. Web方式 1. 概述 理论上,Unity中加载纹理并没有什么难度,只需要将图片放置在Assets文件夹 ...

  7. Mysql8基础知识

    系统表都变为InnoDb表 从MySQL 8.0开始,系统表全部换成事务型的InnoDB表,默认的MySQL实例将不包含任何MyISAM表,除非手动创建MyISAM表 基本操作 创建数据表的语句为CR ...

  8. 万答#18,MySQL8.0 如何快速回收膨胀的UNDO表空间

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 背 ...

  9. 高效简单的.Net数据库“访问+操作”技术

    本文技术源自外企,并已在多个世界500强大型项目开发中运用. 本文适合有初步C#.Linq.Sql知识的同学阅读. 相关技术在IDataAccess接口中提供. IDataAccess所在的命名空间是 ...

  10. OpenStack-iaas之“先点”云平台安装

    1.认识OpenStack 1.云计算的起源 早在2006年3月,亚马逊公司首先提出弹性计算云服务.2006年8月9日,谷歌公司首席执行官埃里克·施密特(Eric Schmidt)在谷歌搜索引擎大会( ...