springboot vue 初步集成onlyoffice

这篇具有很好参考价值的文章主要介绍了springboot vue 初步集成onlyoffice。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

对接onlyoffice,实现文档的预览和在线编辑功能。

一、vue + ts

1. 安装依赖

npm install --save @onlyoffice/文档-editor-vue
# or
yarn add @onlyoffice/document-editor-vue

2. onlyoffice组件实现

<template>
  <DocumentEditor
      id="docEditor"
      :documentServerUrl="documentServerUrl"
      :config="config"
  />
</template>

<script lang="ts" setup>
import type {IConfig} from "@onlyoffice/document-editor-vue";
import {DocumentEditor} from "@onlyoffice/document-editor-vue";

defineProps<{
  documentServerUrl: string,
  config: IConfig
}>()

</script>

3. 使用组件

<template>
  <div class="container_div">
    <back-history :msg="fileName"/>
    <only-office :documentServerUrl="getGlobalConfig().onlyOffice.documentServerUrl" :config="config"/>
  </div>
</template>

<script setup lang="ts">
import onlyOffice from '../../components/onlyOffice.vue'
import {reactive, ref} from "vue"
import BackHistory from "@/components/BackHistory.vue"
import Guid from 'guid'
import {useRoute} from "vue-router"
import {getGlobalConfig} from "@/utils/globalConfig"

let route = useRoute()
let data = JSON.parse(decodeURIComponent(<string>route.query.params))

let fileId = data.id
let title = ref(data.fileName)
let fileName = ref(title.value.slice(0, title.value.lastIndexOf('.')))
let fileType = data.ext

//从配置文件读取onlyoffice配置
const editorConfig = getGlobalConfig().onlyOffice.editorConfig
editorConfig.callbackUrl += fileId

function handleDocType(fileType) {
  let docType = '';
  let fileTypesDoc = [
    'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'epub', 'fodt', 'htm', 'html', 'mht', 'odt', 'ott', 'pdf', 'rtf', 'txt', 'djvu', 'xps'
  ];
  let fileTypesCsv = [
    'csv', 'fods', 'ods', 'ots', 'xls', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx'
  ];
  let fileTypesPPt = [
    'fodp', 'odp', 'otp', 'pot', 'potm', 'potx', 'pps', 'ppsm', 'ppsx', 'ppt', 'pptm', 'pptx'
  ];
  if (fileTypesDoc.includes(fileType)) {
    docType = 'word'
  }
  if (fileTypesCsv.includes(fileType)) {
    docType = 'cell'
  }
  if (fileTypesPPt.includes(fileType)) {
    docType = 'slide'
  }
  return docType;
}

let config =
    {
      documentType: handleDocType(fileType),
      document: reactive<any>({
        fileType: fileType,
        key: Guid.raw(),
        title: title,
        url: data.url
      }),
      editorConfig: editorConfig,
      height: '850'
    }
</script>

4. 我的配置文件

{
  "onlyOffice": {
    "documentServerUrl": "onlyoffice 服务地址",
    "editorConfig": {
      "callbackUrl": "http://172.0.0.139:8095/api/gsdss/file/v1/onlyoffice/save?fileId=",
      "lang": "zh-CN"
    }
  }
}

二、springboot 回调代码

1. 本地存储

        /**
     * onlyOfficeCallBack
     */
    @ApiOperationSupport(order = 10)
    @PostMapping(value = "/v1/onlyoffice/save")
    public String onlyOfficeCallBack(String fileId, HttpServletRequest request, HttpServletResponse response) {
        return service.onlyOfficeCallBack(request, response, fileId);
    }


	@Override
    public String onlyOfficeCallBack(HttpServletRequest request, HttpServletResponse response, String fileId) {
        Scanner scanner;
        try {
            scanner = new Scanner(request.getInputStream()).useDelimiter("\\A");
            String body = scanner.hasNext() ? scanner.next() : "";
            OfficeFileResp jsonObj = JsonUtil.of(body, OfficeFileResp.class);
            
            if (jsonObj.getStatus() == 2) {
                String downloadUri = jsonObj.getUrl();
                URL url = new URL(downloadUri);
                HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
                InputStream stream = connection.getInputStream();
                //查询附件信息,以获取附件存储路径
                AttachmentPO po = findById(fileId);
                File savedFile = new File(po.getPath());
                try (FileOutputStream out = new FileOutputStream(savedFile)) {
                    int read;
                    final byte[] bytes = new byte[1024];
                    while ((read = stream.read(bytes)) != -1) {
                        out.write(bytes, 0, read);
                    }
                    out.flush();
                }
                connection.disconnect();
            }
            return "{\"error\":0}";
        } catch (IOException e) {
            throw new BusinessException("onlyOffice 保存回调失败", e);
        }
    }

三、效果展示

springboot vue 初步集成onlyoffice,【Java技术】,【前端】,spring boot,vue.js,后端,onlyoffice
修改离开当前页面后会自动触发保存,大约5秒后下载文件,文件已经是最新。

踩坑总结

问题1

The document could not be saved. Please check connection settings or
contact your administratorWhen you click the ‘Ok’ button, you will be
prompted to download the document.
(这份文件无法保存。请检查连接设置或联系您的管理员当你点击“OK“按钮,系统将提示您下载文档。)

回调接口不通导致,callbackUrl必须是onlyoffice所在服务器可访问的接口地址,可以进入docker镜像内部查看onlyoffice日志就会有所发现。

docker exec -it 【镜像id】/bin/bash

tail -f /var/log/onlyoffice/documentserver/docservice/out.log-20230805

Error: connect ECONNREFUSED 127.0.0.1:8194
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
[2023-08-07T00:57:50.813] [ERROR] nodeJS - postData error: docId = fc5d1b8f6211403fa8788661007ccd42;url = https://localhost:8194/api/gsdss/file/v1/onlyoffice/save;data = {“key”:“fc5d1b8f6211403fa8788661007ccd42”,“status”:1,“users”:[“uid-1691118844328”],“actions”:[{“type”:1,“userid”:“uid-1691118844328”}]}

问题2

文件版本已更改(The file version has been changed)

document.key 每次编辑和保存文档时,都必须重新生成,目前采用的guid,但是没有捕获编辑后保存的事件去改变,而是每次加载都用新的key

有价值的参考:

  1. https://www.onlyoffice.org.cn/guide/parameters.html
  2. https://blog.csdn.net/qq_43548590/article/details/129948103
  3. https://www.jianshu.com/p/2d4f977ffeac
  4. https://api.onlyoffice.com/editors/config/
  5. https://devpress.csdn.net/viewdesign/64084b4b986c660f3cf917ba.html

springboot vue 初步集成onlyoffice,【Java技术】,【前端】,spring boot,vue.js,后端,onlyoffice文章来源地址https://www.toymoban.com/news/detail-636622.html

到了这里,关于springboot vue 初步集成onlyoffice的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • onlyoffice的介绍搭建、集成过程。Windows、Linux

    项目中用到的技术,做个笔记哈~ 在本地服务器上安装ONLYOFFICE Docs Community Edition Community Edition允许您在本地服务器上安装ONLYOFFICE文档,并将在线编辑器与ONLYOFFICE协作平台或其他流行系统集成。 ONLYOFFICE Docs是一个在线办公套件,包括文本、电子表格和演示文稿的查看器和编辑

    2024年01月19日
    浏览(47)
  • Nextcloud 集成 onlyoffice 配置 apache 反向 SSL 反向代理填坑

    onlyoffice nextcloud Apache  反向代理 nginx Error while downloading the document file to be converted 一台服务器设备安装了很多 docker 服务,包括 nextcloud 和 onlyoffice 和 apache。nextcloud、onlyoffice 服务默认使用 10001 和 10002 端口映射到两个服务的 80 端口。直接访问是通过 80 端口访问的,没有 SSL 加

    2024年01月21日
    浏览(45)
  • kafka:java集成 kafka(springboot集成、客户端集成)

    摘要 对于java的kafka集成,一般选用springboot集成kafka,但可能由于对接方kafka老旧、kafka不安全等问题导致kafak版本与spring版本不兼容,这个时候就得自己根据kafka客户端api集成了。 一、springboot集成kafka 具体官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/

    2023年04月22日
    浏览(57)
  • SpringBoot2+Vue2实战(十四)springboot集成redis实现缓存

    添加redis缓存之后就不会一直刷新数据库,减少数据库压力 pom.xml依赖 也可以自定义key,要用 \\\' \\\' 括起来 fileController 数据库执行删除之后,第一次缓存也删除,后面就不会请求数据库 pom.xml application.yml EchartController 操作完数据库更新缓存操作:(增删改时使用) 第一种方法:

    2024年02月13日
    浏览(37)
  • springboot项目引入onlyoffice多人协同编辑文档

    采用docker安装很方便,例如我服务器ip为    172.12.2.333 安装后访问   http://172.12.2.333:8888 访问成功即可 参考Spring-Boot-onlyOffice: springboot集成onlyOffice的实现。在参考网络上的资料结合自身实际情况总结,让集成oo方便快捷。 封装了oo服务的API和统一了配置。  1.上面下载下来后,

    2024年01月20日
    浏览(47)
  • 科大讯飞语音合成Java springboot集成

    科大讯飞语音合成 文本转语音 一、引入依赖: 二、下载响应的sdk,我这里是下载的java win版本的sdk SDK下载 - 科大讯飞api接口 - 讯飞开放平台 三、具体代码: 从下载的依赖里面找到对应文件,给代码里面替换成你的绝对路径,运行即可 备注:这个地方需要你自己的账号下载

    2024年02月15日
    浏览(48)
  • SpringBoot和Vue2集成WebSocket,实现聊天室功能

    springboot集成websocket实现聊天室的功能。如有不足之处,还望大家斧正。

    2024年01月23日
    浏览(45)
  • WebView2 的初步集成与试用

    目录 一、环境概况 二、安装 三、集成测试  参考资料         由于以前公司自己集成了一个浏览器供客户使用,而原来的浏览器使用的是IWebBrowser2的技术,而IWebBrowser2技术支持的IE框架只能到ie11,但由于现在新的js框架横行,而且加上windows放弃了IE浏览器,而有的客户项目

    2024年02月05日
    浏览(46)
  • 【Java系列】SpringBoot 集成MongoDB 详细介绍

    目录 写在前面 一、步骤介绍 步骤 1: 添加 MongoDB 依赖 步骤 2: 配置 MongoDB 连接信息 步骤 3: 创建实体类 步骤 4: 创建 Repository 接口 步骤 5: 使用 Repository 进行操作 二、特殊处理 在Spring Boot中集成MongoDB的过程相对简单,以下是一个基本的步骤指南。确保项目已经使用了Spring Boo

    2024年02月04日
    浏览(41)
  • Java21 + SpringBoot3集成WebSocket

    近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。 本项目为前后端分离开发,后端基于 Java21 和 SpringBoot3 开发,前端提供了vue、angular、react、uniap

    2024年01月23日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包