SpringBoot集成OpenOffice实现doc文档转html

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 SpringBoot集成OpenOffice实现doc文档转html,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

OpenOffice

OpenOffice.org(通称OpenOffice;简称OOo或OO.o)是一套开放源代码的办公室软件,可以在多种操作系统上运作。

默认的文件交换格式是已经成为ISO标准的开放文件格式(ODFOpenDocument Format),此外也支援Microsoft Office 97至2010的文件格式,

以及其余常见的文件档案。

需求是将doc文档转换成html文件。

注:

博客:
BADAO_LIUMANG_QIZHI的博客_CSDN博客
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、OpenOffice下载

需要在服务器上安装OpenOffice,然后在SpringBoot去调用OpenOffice的服务实现转换。

这里本地是Windows系统,所以选择对应的版本的安装包下载。

Apache OpenOffice – Official Download

SpringBoot集成OpenOffice实现doc文档转html

2、OpenOffice安装

下载完exe安装包之后,双击一路安装,记得选择和记住安装的位置,安装成功之后出现如下图标。

SpringBoot集成OpenOffice实现doc文档转html

这里的安装路径为D:/OpenOffice

SpringBoot集成OpenOffice实现doc文档转html

3、启动OpenOffice的服务

来到上面OpenOffice的安装路径下,在此打开cmd

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 

SpringBoot集成OpenOffice实现doc文档转html

执行如上命令,启动所需服务。如果没有报错则正常启动

4、新建SpringBoot项目

这里直接使用项目快速开发框架搭建起来项目

若依前后端分离版手把手教你本地搭建环境并运行项目:

若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-CSDN博客_若依前后端分离版本的配置SpringBoot集成OpenOffice实现doc文档转htmlhttps://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662

上面在搭建起来前后端分离版的项目后。

在后端SpringBoot项目的pom文件中,引入如下依赖

​
        <!--jodconverter 核心包 -->
        <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>
        <!--jodconverter 本地支持包 -->
        <!-- https://mvnrepository.com/artifact/org.jodconverter/jodconverter-local -->
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.2.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!-- jodconverter-core -->

​

SpringBoot集成OpenOffice实现doc文档转html

5、配置文件中添加配置

找到application.yml中添加如下jodconverter的配置

#jodconverter配置
jodconverter:
  local:
      enabled: true
  #home:安装地址
      office-home: D:\\OpenOffice
      max-tasks-per-process: 10
      port-numbers: 8100

要特别注意的是这里的home要跟你上面openoffice的安装路径所对应。

另外这里的端口不要乱改,就是上面启动openOffice的服务时指定的端口。

SpringBoot集成OpenOffice实现doc文档转html

6、新建Word文档

新建一个word文档,并新增一些内容,然后将其放在resource下新建的static目录下

SpringBoot集成OpenOffice实现doc文档转html

7、新建Controller

新建一个Controller,直接注入转换器

@RestController
@RequestMapping("/openoffice")
public class OpenOfficeController extends BaseController
{
    // 第一步:转换器直接注入
    @Autowired
    private DocumentConverter converter;

然后编写转换的方法

​
    @RequestMapping("/convertToHtml")
    public void convertToHtml() throws OfficeException, FileNotFoundException {
        //转换后的新文件
        File newFile = new File("D://badao.html");
        //需要转换的文件
        File sourceFile = new File(ResourceUtils.getFile("classpath:static").getAbsolutePath() + "\\badao.doc");
        converter.convert(sourceFile).to(newFile).execute();
    }

​

直接调用转换器的converter方法即可,这里将转换后的文件存放在D盘下。

完整Controller方法

​
package com.ruoyi.web.controller.system;

import com.ruoyi.common.core.controller.BaseController;
import org.jodconverter.DocumentConverter;
import org.jodconverter.office.OfficeException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileNotFoundException;

@RestController
@RequestMapping("/openoffice")
public class OpenOfficeController extends BaseController
{
    // 第一步:转换器直接注入
    @Autowired
    private DocumentConverter converter;

    @RequestMapping("/convertToHtml")
    public void convertToHtml() throws OfficeException, FileNotFoundException {
        //转换后的新文件
        File newFile = new File("D://badao.html");
        //需要转换的文件
        File sourceFile = new File(ResourceUtils.getFile("classpath:static").getAbsolutePath() + "\\badao.doc");
        converter.convert(sourceFile).to(newFile).execute();
    }
   
}

​

然后就可以直接使用接口测试工具调用该接口进行测试转换效果。

8、使用前端调用接口测试效果。

因为这里考虑后面业务流程的实现,所以用前端调用该接口进行测试。

前端新增页面,页面新增按钮,按钮设置点击方法,调用Js中的方法

<template>
  <div class="component-upload-image">
    <el-button @click="convertToHtmlRequest">doc转换成html</el-button>
  </div>
</template>

<script>
import {convertToHtml } from "@/api/system/openOffice";
export default {
  name: "openOffice",
  data() {
    return {
     
    };
  },
  methods: {
    convertToHtmlRequest() {
      convertToHtml().then((response) => {
        console.log(response);
      });
    }
  },
  watch: {},
};
</script>

<style scoped lang="scss">

</style>

调用的js代码中发出请求并调用后台接口

​
import request from '@/utils/request'

export function convertToHtml() {
  return request({
    url: '/openoffice/convertToHtml',
    method: 'get',
  })
}

​

效果展示

SpringBoot集成OpenOffice实现doc文档转html

9、问题

如果后台在启动时提示:

invalid officeHome: it doesn’t contain soffice.bin:D:…

SpringBoot集成OpenOffice实现doc文档转html那就是OpenOffice的安装路径和在application.yml中配置的路径不对应。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136190.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!