javascript
SpringBoot集成OpenOffice实现doc文档转html
場景
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
2、OpenOffice安裝
下載完exe安裝包之后,雙擊一路安裝,記得選擇和記住安裝的位置,安裝成功之后出現如下圖標。
這里的安裝路徑為D:/OpenOffice
3、啟動OpenOffice的服務
來到上面OpenOffice的安裝路徑下,在此打開cmd
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard執行如上命令,啟動所需服務。如果沒有報錯則正常啟動
4、新建SpringBoot項目
這里直接使用項目快速開發框架搭建起來項目
若依前后端分離版手把手教你本地搭建環境并運行項目:
若依前后端分離版手把手教你本地搭建環境并運行項目_BADAO_LIUMANG_QIZHI的博客-CSDN博客_若依前后端分離版本的配置https://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 -->?5、配置文件中添加配置
找到application.yml中添加如下jodconverter的配置
#jodconverter配置 jodconverter:local:enabled: true#home:安裝地址office-home: D:\\OpenOfficemax-tasks-per-process: 10port-numbers: 8100要特別注意的是這里的home要跟你上面openoffice的安裝路徑所對應。
另外這里的端口不要亂改,就是上面啟動openOffice的服務時指定的端口。
6、新建Word文檔
新建一個word文檔,并新增一些內容,然后將其放在resource下新建的static目錄下
7、新建Controller
新建一個Controller,直接注入轉換器
@RestController @RequestMapping("/openoffice") public class OpenOfficeController extends BaseController {// 第一步:轉換器直接注入@Autowiredprivate 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 {// 第一步:轉換器直接注入@Autowiredprivate 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',}) }?效果展示
9、問題
如果后臺在啟動時提示:
invalid officeHome: it doesn't contain soffice.bin:D:...
那就是OpenOffice的安裝路徑和在application.yml中配置的路徑不對應。
總結
以上是生活随笔為你收集整理的SpringBoot集成OpenOffice实现doc文档转html的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若依前后端分离版怎样去掉登录验证码
- 下一篇: Winform中连接Mysql8并查询表