如何使用 ONLY OFFICE 在你的 WEB 中集成 OFFICE 文档编辑功能

sxkk20081年前知识分享65

前言

在日常 WEB 开发过程中常常有附件管理的需求,而这些附件大部分是 OFFICE 文件,而对于这些办公文档,用户需要下载下来编辑,编辑完成后上传,而对于用户的改动,开发者还需要实现历史版本管理功能。若能够实现 Office 文档在线编辑功能,这将大大提高用户的协作效率,而这个功能对于普通开发者来说非常困难的,今天我将介绍一款开源的办公套件 ONLYOFFICE,它可以帮你在 WEB 中轻松集成 OFFICE 文档编辑功能。

ONLY OFFICE 介绍

ONLYOFFICE 是一个免费开源的协作办公套件,适用于 Windows、Linux 和 macOS。该套件包括 3 个主要微软 Office 的替代品(Word、Excel、PowerPoint)。也提供表单(Forms)生成器,PDF 查看器和文件转换器。

对于个人用户,我们完全可以使用 ONLYOFFICE 代替 Microsoft Office,它与 Microsoft Office 高度兼容,并且免费无广告,你可以在 ONLYOFFICE 官网上下载桌面版本或者手机版本。

ONLYOFFICE 除了能够代替 Microsoft Office,还拥有云端存储,多人实时编辑共享的功能。

在侧边底部,选择链接到云,通过简单的注册,就可以实现文档云端同步

在这个 Tab 下新建的文档便会自动保存到云,只要登录相同的账号,我们就可以在多个设备之间共享文档。

云端的文档还可以协同编辑,我们只需要点击右上角的共享,添加一个链接,将这个链接发送给你的同事,你们就可以协同编辑。

协同者只需要浏览器,就可以编辑,我们再也不用为了软件版本不兼容而烦恼,这大大提高了文档协同编辑的效率。

能够使用浏览器编辑,这一功能这得益于 ONLY OFFICE 是使用 HTML5 的 canvas 和 JavaScript 实现的。

ONLY OFFICE 实现原理

想要在你的 web 中集成 ONLYOFFICE,我们得先要知道它的原理,下图来自于 ONLYOFFICE 官方文档

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

因此实现这一功能需要有 2 部分组成

  • 文档编辑器(document editor)
  • 文档服务器(document server)

前端实现

对于前端来说实现很简单,只需要在 html 设置一个容器,并且引入文档编辑器的 api

<div id="placeholder">div>
<script
  type="text/javascript"
  src="https://documentserver/web-apps/apps/api/documents/api.js"
>script>

其中documentserver 是安装了 ONLYOFFICE Document server 的服务器的名称。

new DocsAPI.DocEditor('placeholder', {
  document: {
    fileType: 'docx',
    key: 'Khirz6zTPdfd7',
    title: 'Example Document Title.docx',
    url: 'https://example.com/url-to-example-document.docx',
  },
  documentType: 'word',
})

JavaScript 部分只需要通过 DocsAPI new 一个 DocEditor 即可。

其中 example.com 是安装文档管理器和文档存储服务的服务器的名称。

安装 OnlyOffice

因此关键部分还是在 server 部分,为此我们要准备一台服务器, 我这里选择使用 CentOS、2 核 2GB 的服务器,其他 Linux 版本的安装,大家可以参考官网

安装方式我选择使用 Docker

前置条件:服务器可连接外网

安装 Docker

安装 Docker 我选择使用阿里云镜像安装,登录服务器后,在命令行中输入以下命令

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

等待几分钟后就可以安装成功。

我们可以使用 docker -v, 查看 docker 的版本

安装 OnlyOffice 社区版

在命令行中输入以下命令

sudo docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver
  • -p 80:80 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。

  • --restart=always 容器自动重启

  • onlyoffice/documentserver 镜像名称

官方还建议将数据存放在 Docker 容器之外,因为这样可以新版本发布后,轻松更新 ONLYOFFICE Docs 而不会造成丢失数据。

因此需要使用下面命令

sudo docker run -i -t -d -p 80:80 --restart=always \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql  onlyoffice/documentserver

数据卷说明

  • /var/log/onlyoffice 对于 ONLYOFFICE 文档日志
  • /var/www/onlyoffice/Data 证书
  • /var/lib/onlyoffice 用于文件缓存
  • /var/lib/postgresql 对于数据库

首次执行,镜像需要下载,需要等待几分钟。

安装成功后可以使用 docker ps 查看运行状态

接下来我们, 就可以使用 ip 访问 onlyoffice 的服务页面了。

onlyoffice 很贴心地在欢迎页面上添加了 example 测试示例,按页面上的命令执行,启动测试示例,点击Go To Example, 就可以访问文档编辑器示例了

点击左侧,便可以创建在线 Word、Excel、PowerPoint 等

在 Nodejs 中集成

接下来,我们需要在自己的程序中集成 onlyoffice。

ONLYOFFICE Docs 旨在无缝适配您的网络应用程序,无论您的应用程序是用什么语言编写的,ONLYOFFICE 为流行的前端框架提供了在线编辑器集成和示例

我们可以在API 官网下载 Nodejs Example

下载完成完成后, 进入程序目录,并且安装 npm 包

cd  Node.js Example
yarn install

接下来我们需要修改文档服务器地址 config/default.json

"storageFolder": "./files"
"storagePath": "/files"
"siteUrl": "https://documentserver/"

documentserver 就是刚刚安装的 IP 地址。 storageFolder 和 storagePath 我们可以根据实际修改。

运行程序

yarn satrt

然后我们使用浏览器访问 http://localhost:3000

进入后的界面同 Docker Example 一致,但是我们创建一个新的文档,界面会提示以下错误。

The document security token is not correctly formed.

原因是从 7.2 版本开始, JWT 验证默认开启

如果在安装期间未添加自定义密钥,则会自动生成随机密钥。

查看秘钥

我们可以根据文档服务器欢迎页面上的提示,执行查看秘钥。

获得的秘钥修改到 config/default.json 中。

修复完成后,我们再次创建文档,访问http://localhost:3000/editor?fileName=new.docx

此时页面会有以下错误提示Download failed.

Download failed.

原因是,我们的 document server 安装在 docker 中。对于 docker 服务来说, localhost:3000 是不存在这个文件的。

因此我们需要通过本机 IP 访问。 真实生产环境上,我们会分配一个域名。使用 IP 或者域名访问就可以成功了。最后附上一张成功的截图。

小结

本文我们没有介绍 Nodejs 文件读写的实现,其大部分代码都在 app.js 中,而是主要介绍了 ONLYOFFICE 部署和对接过程。

  1. 使用开源软件 ONLYOFFICE 代替 Microsoft Office
  2. 使用 docker 部署了 ONLYOFFICE 社区版 Document Server
  3. 使用官方的 Nodejs Demo 对接 Document Server

当然本文只是对 ONLYOFFICE 做了一个简单的介绍,更多功能请大家参考 ONLYOFFICE 官网

以上就是本文全部内容,如果对你有帮助,可以随手点个赞,这对我真的很重要,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

相关文章

人工智能人像识别技术:智能社会中的发展与应用

人工智能人像识别技术:智能社会中的发展与应用

  人像识别技术是一项基于人工智能的先进技术,通过对人脸图像的分析和识别,实现对人物身份的确认和特征的提取。在当今智能社会中,人像识别技术得到广泛应用,带来了许多便利和机会。...

百度AI:大数据技术让人类更智慧的科技创新

百度AI:大数据技术让人类更智慧的科技创新

  百度AI是基于百度搜索技术、大数据技术、自然语言处理技术以及深度学习技术等多项创新技术的基础上构建出的人工智能平台,为人类带来了识别、交互、分析、应用等更高级别的智能服务...

pftm10型号中心:创新成就智能生产的崛起

pftm10型号中心:创新成就智能生产的崛起

  在当今快速发展的科技时代,智能生产成为各行业追逐的目标。作为先进的技术创新之一,pftm10型号中心以其卓越的特性和出色的性能,成功地开启了智能生产的新纪元。  过去,人...

探析人工智能技术中的模式识别及其应用

探析人工智能技术中的模式识别及其应用

  人工智能作为一种独特的智能科技,已经成为当前科技领域热门的话题。其中,模式识别作为人工智能领域的重要分支,对于机器学习和数据分析等应用起着至关重要的作用。  模式识别是指...

ipad下载不兼容怎么解决?应对措施和解决方案详细解析!

ipad下载不兼容怎么解决?应对措施和解决方案详细解析!

  当你使用iPad下载文件时,有时会遇到兼容性问题,导致无法顺利完成下载或打开文件。这种情况可能会让你感到困惑和沮丧。然而,不必担心!本文将为大家介绍几种常见的iPad下载...

AI官网:领先科技进步,引领智能未来

AI官网:领先科技进步,引领智能未来

  在当今日新月异的科技领域中,人工智能(AI)被认为是引领智能未来的重要驱动力。各大企业纷纷投入巨资研发AI技术,而AI官网作为一个专注于AI领域的网站,汇集了最新的技术进...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。