SpringBoot集成LibreOffice+jodconverter做文件预览(office转pdf)

简介

LibreOffice 是一款开放源代码的自由免费全能办公软件,可运行于 Microsoft Windows, GNU/Linux 以及 macOS 等操作系统上。它包含了 Writer, Calc, Impress, Draw, Math 以及 Base 等组件,可分别用于文本文档、电子表格、幻灯片演示文稿、绘图文档、数学公式编辑、数据库管理等工作。

LibreOffice 采用对企业和个人用户均免费的 MPL 2.0 授权协议。您可以自由分发该软件,无需支付授权费用(但您仍然可以付费获得经认证的专业支持)。它的源代码完全公开,任何人都可以参与软件的开发和维护。

jodconverter概述

JODConverter是 Java OpenDocument 转换器,可在不同办公格式之间转换文档。它利用Apache OpenOffice或LibreOffice,它们为当今可用的 OpenDocument 和 Microsoft Office 格式提供可以说是最好的免费导入/导出过滤器。

JODConverter自动执行 OpenOffice/LibreOffice 支持的所有转换。支持的转换包括(但不限于。您的 OOo 安装支持的所有转换都由 JODConverter 支持):

文件类型 输入格式 输出格式
文本 DOC、DOCX、ODT、OTT、RTF、文本等。 DOC、DOCX、HTML、JPG、ODT、OTT、FODT、PDF、PNG、RTF、TXT 等。
电子表格 CSV、ODS、OTS、TSV、XLS、XLSX 等。 CSV、HTML、JPG、ODS、OTS、FODS、PDF、PNG、TSV、XLS、XLSX 等。
介绍 ODP、OTP、PPT、PPTX等 GIF、HTML、JPG、ODP、OTP、FODP、PDF、PNG、PPT、PPTX、BMP 等。
画画 ODG、OTG 等 GIF、JPG、ODG、OTG、FODG、PDF、PNG、SVG、TIF、VSD、BMP 等。
其他 HTML DOC、DOCX、HTML、JPG、ODT、OTT、FODT、PDF、PNG、RTF、TXT 等。
JODConverter可以以多种不同的方式使用:

目标

1.完成office文档->pdf

入门案例

安装libreoffice

libreoffice官网下载地址

Mac版:

下载Mac版,直接安装,LibreOffice Home:/Applications/LibreOffice.app/Contents/

Ubuntu版:

sudo apt-add-repository ppa:libreoffice/ppa
sudo apt update
sudo apt upgrade
sudo apt install libreoffice

Home:/usr/lib/libreoffice

查看版本

libreoffice --version

Windows版

安装到相应目录,Home:相应安装目录 

下载可以选择windows/linux或其他操作系统
本节按照windows进行测试

新建springboot项目,引入以下依赖。

 
        
            org.jodconverter
            jodconverter-spring-boot-starter
            4.4.4
        
        
            org.jodconverter
            jodconverter-local
            4.4.4
        
        
            org.jodconverter
            jodconverter-core
            4.4.4
        


  org.libreoffice
  ridl
  5.4.2

配置文件

jodconverter.local.enabled=true
# libreOffice根目录
jodconverter.local.office-home=home目录
# 任务执行的超时时间
jodconverter.local.task-execution-timeout=86400000
# 任务队列的超时时间
jodconverter.local.task-queue-timeout=86400000
# 端口(线程)
jodconverter.local.port-numbers=2001,2002,2003
# 一个进程的超时时间
jodconverter.local.process-timeout=86400000

以上配置文件是基于本地的libreoffice服务进行配置,更多配置可以查看自动装配类JodConverterLocalProperties

测试代码

 /**
* 注入文档转换接口,
* springboot自动装配时会在容器中添加一个bean对象,
* 也就是其实现类LocalConverter
*/
@Resource
private DocumentConverter documentConverter;
@Test
public void convert() {
File source = new File("D:\\document\\测试\\测试.docx");
File target = new File("D:\\document\\测试\\测试.pdf");
// convert方法指定源文件对象/输入流
// to方法指定目标文件对象/输出流(源文件可以不存在,如果不存在则会创建)
// todo: 目标文件的后缀要和即将转换的文件类型一致,否则会造成文件损坏
// todo: as方法接受的时DocumentFormat对象,我们可以使用默认注册完的DocumentFormat对象,
// execute方法是执行转换的方法,方法没有返回值,是同步执行
try {
documentConverter.convert(source).to(target).as(DefaultDocumentFormatRegistry.PDF).execute();
} catch (OfficeException e) {
log.error("文档转换异常:{}", e.getMessage());
}
}

你可能感兴趣的:(学习笔记,java)