【vue2+onlyoffice】基础预览demo运行+问题解决

之前其实写过Onlyoffice的使用,但是写得不太完整,这次补充下。

一、OnlyOffice简介

  • ONLYOFFICE,是一个包含常用办公套件,Word 、Excel、PPT大办公套件搬到了云端,只需要一个浏览器即可以在线使用 Office 的各种功能。
  • 特色:可以用于文档处理、协作编辑、项目管理和文档预览等多种用途。
  • 版本对比:
    • 开源版(Community Edition):
      免费提供,适用于个人用户和小型团队。
      包含基本的文档处理、协作编辑和项目管理功能。
      支持跨平台运行和多人协作编辑。(同一个文档同一时间不能超过20人协同编辑)
    • 专业版(Professional Edition):
      面向个人用户和小型团队,需付费使用。
      提供了企业版的全部功能,以及更多的定制选项和扩展功能,如API集成、插件支持等。
    • 企业版(Enterprise Edition):
      针对企业用户提供,需付费使用。
      提供了高级功能和技术支持服务,如CRM集成、文档版本控制、权限管理等。
      具备更高级的安全性和可定制性,支持LDAP/AD集成、SSO登录等企业级认证和安全机制。
    • 云版(Cloud Edition):
      基于云端的服务模式,无需自行部署服务器。
      提供与开源版和企业版相似的功能,包括文档编辑、协作、项目管理等。
      提供不同的订阅计划和灵活的服务规模,适用于不想自行管理服务器的用户或团队。

对于一般内部项目来说开源版足够了。如果需要去掉它自带的logo和名称是需要付费版的。

二、服务组成

ONLYOFFICE文档服务分为客户端和服务端两部分。

客户端包括:
文档管理器(Document manager)
文档编辑器(Document editor)

服务端包括:
文档存储服务(Document storage service)
文档编辑服务(Document editing service)
文档指令服务(Document command service)
文档转换服务(Document conversion service)
文档构建服务(Document builder service)

三、工作原理

1.打开文件

1、用户使用文档管理器打开文档进行查看或者编辑。(基于浏览器访问)
2、使用JavaScript API 将文档唯一标识符(key)以及文档URL(url)发送到文档编辑器。
3、文档编辑器向文档编辑服务发送一个打开文档的请求。
4、文档编辑服务从文档存储服务下载相对应的文档,并将文档转换为Office Open XML格式。
5、准备就绪后,文档编辑服务会将转化后的文档传输到基于浏览器的文档编辑器。
6、提供编辑或者查看权限,对文档进行相应操作,执行保存

2.保存文件

1、用户在文档编辑器中编辑文件。
2、文档编辑器将更改发送给文档编辑服务。
3、用户关闭文档编辑器。
4、文档编辑服务监视到文档结束工作,并收集从文档编辑器发送到一个文档中的更改
5、执行回调保存接口
6、返回状态

3.协同编辑

1、用户1和用户2在文档编辑器中打开同一个文档,即打开文件时已使用一个相同的document.key
2、用户1对打开的文档进行更改。
3、文档编辑器将用户1所做的更改发送到文档编辑服务。
4、文档编辑服务将用户1所做的更改发送给用户2文档编辑器。
5、现在用户2可以看到这些变化。

四、使用

1. 构建文档服务器

这步一般是后端实现的,这里就列一些参考的文章

1.onlyoffice使用记录

onlyoffice连接mysql 2.onlyoffice去掉token验证 3.把各种功能按钮提出来。(保存、下载、打印…)在这里插入图片描述
最后他的效果图如上。

2.demo运行时报错的解决(后端处理)

  • 报错:文档安全令牌未正确形成
    - 可能是JWT的原因,去掉验证就可以了?(如果要更安全的话可以自己加个Token?)
  • 报错:下载失败
    - 使用内部ip地址访问后端服务报错,修改/etc/onlyoffice/documentserver/default.json​中配置
    - 扩展 使用localhost不能跳转至插件的问题,解决方案:使用nginx反向代理。

2.vue中连接&展示(demo)

  1. 创建一个vue2项目
  2. public中的index.htmlhead里增加<script type='text/javascript' src='http://ip:port/web-apps/apps/api/documents/api.js'></script>
  3. 需要有一个线上文档的地址,才能用Onlyoffice打开。
  4. 新建一个组件在components目录下:vanOnkyOffice.vue
<template><div id="vabOnlyOffice"></div>
</template><script>
import { getFileType } from "@/utils/wayne";export default {name: "VabOnlyOffice",props: {option: {type: Object,default: () => {return {};},},},data() {return {doctype: "",//参数说明parameters: {document: {//文件扩展名fileType: "docx",//key 默认置空则不走缓存 always updatekey: "",//为已查看或编辑的文档定义所需的文件名,该文件名在下载文档时也将用作文件名。title: "",//文件地址url: "",//相关权限permissions: {copy: true, //定义内容是否可以复制到剪贴板。如果该参数设置为false,则只能在当前文档编辑器中粘贴内容。默认值为true。download: true, //定义文档是可以下载还是只能在线查看或编辑。如果下载权限设置为“假”的下载为...菜单选项将是缺席的文件菜单。默认值为true。edit: true, //定义文档是可以编辑还是只能查看。如果编辑权限设置为“true”,则文件菜单将包含编辑文档菜单选项;请注意,如果编辑权限设置为“false”,文档将在查看器中打开,即使模式参数设置为edit,您也无法将其切换到编辑器。默认值为true。print: true, //定义是否可以打印文档。如果打印权限设置为“false”的打印菜单选项将是缺席的文件菜单。默认值为true},},//文件类型documentType: "text",height: "100%",width: "100%",editorConfig: {//语言:zh-CN简体中文/en英文lang: "en",//阅读状态 view/editmode: "view",customization: {//是否显示插件plugins: false,},},},};},watch: {option: {handler: function (n) {this.setEditor(n);this.doctype = getFileType(n.fileType);},deep: true,},},mounted() {if (this.option.url) {this.setEditor(this.option);}},methods: {async setEditor(option) {this.doctype = getFileType(option.fileType);let config = {document: {//后缀fileType: option.fileType,key: "",title: option.title,permissions: {edit: option.isEdit, //是否可以编辑: 只能查看,传falseprint: option.isPrint,download: false,// "fillForms": true,//是否可以填写表格,如果将mode参数设置为edit,则填写表单仅对文档编辑器可用。 默认值与edit或review参数的值一致。// "review": true //跟踪变化},url: option.url,},documentType: this.doctype,editorConfig: {callbackUrl: option.editUrl, //"编辑word后保存时回调的地址,这个api需要自己写了,将编辑后的文件通过这个api保存到自己想要的位置lang: option.lang, //语言设置//定制customization: {autosave: false, //是否自动保存chat: false,comments: false,help: false,// "hideRightMenu": false,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false//是否显示插件plugins: true,//暂时无法生效customer: {address: "12333333333",info: "S11",logo: "123",mail: "j123",name: "123",www: "123",},},},width: "100%",height: "100%",};// eslint-disable-next-line no-undef,no-unused-varsnew DocsAPI.DocEditor("vabOnlyOffice", config);},},
};
</script>

@/utils/wayne里的方法

export function getFileType(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 = 'text'}if (fileTypesCsv.includes(fileType)) {docType = 'spreadsheet'}if (fileTypesPPt.includes(fileType)) {docType = 'presentation'}return docType}
  1. 在App.vue中调用这个组件:
<template><div class="qualityManual-container"><div class="qualityManual-container-office"><vab-only-office :option="option" /></div></div>
</template><script>
import vabOnlyOffice from "./components/vabOnlyOffice";export default {name: "QualityManual",components: { vabOnlyOffice },data() {return {//参考vabOnlyOffice组件参数配置option: {url: "",isEdit: "",fileType: "",title: "",lang: "",isPrint: "",},};},methods: {getFile() {// getAction('/onlyfile/file/queryById', { id: this.id }).then(res => {this.option.isEdit = true;this.option.lang = "en";this.option.url ="http://xxx/xxxxxx.docx";this.option.title = "123";this.option.fileType = "docx";this.option.isPrint = false;// })},},mounted() {this.getFile();},
};
</script><style lang="scss" scoped>
.qualityManual-container {padding: 0 !important;&-office {width: 100%;height: 90vh;}
}
</style>

其实主要是使用了参考2里面的代码,留着备份一下。

五、参考

1.onlyoffice+vue实现在线预览在线编辑 :包括onlyoffice介绍和前后端代码
2.Vue 预览word,excel,ppt等office文档-内网访问(基于onlyoffice,后端返回文件流) 上面这篇的前端组件也是参考的这个文档里的。
3java+vue+onlyoffice的简单集成:代码不太全;提到集成插件(签章)是在部署docker的时候挂载?;从文档管理页跳转到详情页的写法。有包括后端的保存回调写法。
vue+onlyoffice实现编辑和预览 有完整的使用代码,参考1里的代码是在这个基础上做整合的。
4.ONLYOFFICE的csdn:里面有些教程,不过首发应该还是它自己的官网?
5.【onlyoffice中文指南】12-问题及排除 确实是比较常见的问题。
6. 史上最全 在线编辑 onlyOffice 使用步骤 还没看,好像还有后端的保存的写法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html、css、京东移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源&#xff0c;且作为作者的我不可修改为免费资源&#xff0c;不可删除&#xff0c;寻找客服无果&#xff0c;很愤怒&#xff0c;&#xff08;我发布免费资源就是希望大家能免费一起用、一起学习&#xff09;&#xff0c;接下来继续寻找…

软考 系统架构设计师系列知识点之软件可靠性基础知识(4)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件可靠性基础知识&#xff08;3&#xff09; 所属章节&#xff1a; 第9章. 软件可靠性基础知识 第1节 软件可靠性基本概念 9.1.2 软件可靠性的定量描述 从软件可靠性的定义可以看到&#xff0c;软件的可靠性可以基…

c++初阶-----STL---vector

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址&#xff1a;SecuPress Pro 专业版.zip SecuPress Pro&#xff1a;专业的WordPress安全解决方案 如果您没有时间进行每周扫描&#xff0c;SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能&#xff0c;同时还增加了一些高级选项&#xff…

CUDA的开发技术难点

CUDA的开发技术难点不仅包括对并行计算模型的理解&#xff0c;还涉及到内存管理、线程同步、性能优化等多个方面。开发者需要不断学习和实践&#xff0c;才能熟练掌握CUDA编程。CUDA的开发技术难点主要集中在以下几个方面。北京木奇移动技术有限公司&#xff0c;专业的软件外包…

时装购物系统,基于 SpringBoot+Vue+MySql 开发的前后端分离的时装购物系统分析设计与实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 前台首页功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的…

【git学习】Git 的基本操作

文章目录 &#x1f680;创建 Git 本地仓库&#x1f680;配置 Git&#x1f680;认识⼯作区、暂存区、版本库&#x1f680;添加⽂件操作 &#x1f680;创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制&#xff0c;就必须先创建⼀个仓库出来。 …

C语言编程题_3D接雨水

接雨水的题目描述如下。 (1) 2D接雨水&#xff1a; 字节员工是不是个个都会接雨水 &#xff1b; (2) 3D接雨水&#xff1a; 407. 接雨水 II &#xff1b; (3) 3D接雨水&#xff1a; 字节人都会的 3D接雨水 。 问题描述 难度&#xff1a;困难 给你一个 m x n 的矩阵&#xff…

uniapp配置了pages.json 的 tabbar 国际化,小程序切换语言没有实时切换

如上图&#xff0c;按照uniapp官方文档配置了tabbar的国际化 但是微信小程序实时切换语言没有实时刷新 解决方案&#xff1a; 在App.vue中加入以下代码&#xff1a; 在onLaunch中执行方法即可

DevOps(十二)Jenkins实战之Web发布到远程服务器

前面两篇博文介绍了怎么将django开发的web应用推送到gitlab源码仓库&#xff0c;然后jenkins服务器从gitlab仓库拉下来&#xff0c;布署到jenkins服务器上&#xff0c;并用supervisor进行进程管理&#xff0c;保证web应用一直能正常运行&#xff0c;今天我们继续优化&#xff0…

云原生Kubernetes: K8S 1.29版本 部署ingress-nginx

目录 一、实验 1.环境 2. K8S 1.29版本 部署ingress-nginx 二、问题 1.kubectl 如何强制删除 Pod、Namespace 资源 2.创建pod失败 3.pod报错ImagePullBackOff 4.docker如何将镜像上传到官方仓库 5.创建ingress报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表…

学习指导|在改变

备忘在这里啦。潦草本草

css中新型的边框设置属性border-inline

一、概念与背景 border-inline 是 CSS Logical Properties and Values 模块中的一个属性&#xff0c;用于控制元素在流内&#xff08;inline&#xff09;方向上的边框。该模块旨在提供与书写模式&#xff08;writing mode&#xff09;无关的布局和样式描述方式&#xff0c;使得…

【1429】招生管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 招生管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

2024年新算法-鹦鹉优化器(PO)优化BP神经网络回归预测

2024年新算法-鹦鹉优化器(PO)优化BP神经网络回归预测 亮点&#xff1a; 输出多个评价指标&#xff1a;R2&#xff0c;RMSE&#xff0c;MSE&#xff0c;MAPE和MAE 满足需求&#xff0c;分开运行和对比的都有对应的主函数&#xff1a;main_BP, main_PO, main_BPvsBP_PO&#x…

抖音 小程序 获取手机号 报错 getPhoneNumber:fail auth deny

这是因为 当前小程序没有获取 手机号的 权限 此能力仅支持小程序通过试运营期后可用&#xff0c;默认获取权限&#xff0c;无需申请&#xff1b; https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/guide/open-capabilities/acquire-phone-number-acqu…

Redis入门到通关之Redis网络模型-用户空间和内核态空间

文章目录 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开发者。 博客特色&#xff1a; 在我的…

DevOps(十三)Jenkins之Selenium插件配置

一、Selenium Grid详细介绍 Selenium Grid 是 Selenium 测试套件的一部分&#xff0c;主要用于通过并行执行测试来提高测试执行的速度和效率。它允许您在多个环境&#xff08;不同的浏览器和操作系统&#xff09;上同时运行测试&#xff0c;从而帮助在开发过程中快速发现跨浏览…

Github 2024-04-25Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Vue项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revised” Lic…

spark3.0.0单机模式安装

注&#xff1a;此安装教程基于hadoop3集群版本 下载安装包 下载spark3.0.0版本&#xff0c;hadoop和spark版本要对应&#xff0c;否则会不兼容 用xftp上传Linux虚拟机&#xff0c;上传目录/bigdata&#xff08;可修改&#xff09; 解压 tar -zxvf /bigdata/spark-3.0.0-bin-h…