使用Onlyoffice 实现web版的Word,Excel 协同办公套件

一、写在前面

像在线文档工具市场上很很多了,比如腾讯文档,石墨文档等。都已经提供了像word,exce,powerpoint 这样的功能,这些文档工具很优秀,使用起来非常的方便,但在中小规模的公司项目集成上使用就不是那么合适了,这时基于开源文档工具的定制化集成的方式可作为一个选择。OnlyOffice 就这样的一个优秀的文档服务平台。

ONLYOFFICE Docs 是一个开源办公套件,包括文本文档、电子表格、演示文稿和可填写表格的编辑器。

它提供以下功能:

  • 创建、编辑和查看文本文档、电子表格、演示文稿和可填写的表格;
  • 与其他团队成员实时协作处理文件。

ONLYOFFICE Docs 还支持用于将您的应用程序与onlyoffice集成的**WOPI 协议。

数据交互流程
和你的项目集成后是这样的结构:

(1)打开一个文档(携带URL地址)
      ↓
      ↓
web浏览器(js实现的word编辑器)   → → → (2) → → →  发送 文档URL 到 onlyoffice文档服务
 ↓        ↑       ↓      ↑  ←  ← ← ← (3) ← ← ←  onlyoffice服务(拉取文档解析成Open XML 格式) 
 ↓        ↑       ↓
 ↓        ↑       ↓ 
 ↓ → (4) →↑       ↓
                  ↓ → →(5)你的java应用(保存时会将文件流传过来)
                                 ↓
                                 ↓ → →(6)保存文档
说明:
* (1) 要打开一个文档时,携带这个 word 文档的url地址。
* (2)拉取并展示文档:web页面的js编辑器 将url发给 onlyoffice服务。
* (3) onlyoffice文档服务 拉取 word 文档,将文档转换为 Office Open XML 格式,返回给 js编辑器。
* (4) 用户在 web页面的js编辑器 修改编辑这个文档
* (5) 修改完毕后,保存。保存后的文档 被 onlyoffice 文档服务 通过url 接口回调的方式传递给 你的java应用
* (6) 你的java应用负责保存这个文件。

建议的web集成方式 --将编辑器的前端HTML和你的前端工程分离

  • 将编辑器的前端HTML和你的前端工程分离,好处是避免过度耦合和互相隔离,在处理权限控制上也更方便。
  • 使用java编写一个 spring MVC 项目,不仅负责返回一个 web 页面,也负责一些文档存储的回调等接口。
  • 你的前端项目调用java,获得一个 html页面,作为 iframe 集成到前端工程中。
  • 文档保存时,回调你的JAVA项目,负责保存文档。

二、使用 onlyoffice 集成

2.1 快速开始

由两部分组成:

  • 使用 docker 启动一个 文档服务
  • 在html页面集成一个js 实现的编辑器。

先使用 docker 启动一个 文档服务,方法见本文后面部分。这里先说下前端集成:

(1) 引入 js 依赖

<!-- 下面的 http://10.0.0.102:8090 指向你用docker部署的文档服务地址  -->
<script type="text/javascript" src="http://10.0.0.102:8090/web-apps/apps/api/documents/api.js"></script>

(2) 编写一个HTML页面,在嵌入编辑器的目标 HTML 文件中需要有一个占位符div标签

<div id="placeholder"></div>

(3) 初始化一个编辑器即可。

  <!-- 下面的 url 是 word 文件地址  -->
    <script type="text/javascript" >
      new DocsAPI.DocEditor("placeholder", {
          "document": {
              "fileType": "docx",
              "key": "USORxWbTQR83opgc0cyrnri2JJ7avClC",
              "title": "Example Document Title.docx",
              "url": "http://10.0.0.14:3000/ddd.docx"
          },
          "documentType": "word"
      });
    </script>

这样就实现了你的 web 版的word编辑器,非常的简单方便。

2.2 启动一个onlyoffice文档服务

这里使用 docker 启动它。

# 先创建文件夹
mkdir -p /var/log/onlyoffice
mkdir -p /var/www/onlyoffice/Data
mkdir -p /var/lib/onlyoffice
mkdir -p /var/lib/postgresql

# 使用 docker 搭建,注意 -e JWT_ENABLED=false 关闭了token检验
docker run --restart=always --name onlyoffice \
    -p 8090:80 \
    -e JWT_ENABLED=false \
    -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

三、扩展

3.1 使用Java集成

官网有个 Java Spring Example 的官方示例。带web页面,可 展示文档列表页面,和被 回调保存文件。

四、参考

感谢下述文章的作者提供好的文章。

这个介绍了通过java 返回 web页面的集成方法
https://juejin.cn/post/6976937853309698062

https://blog.yanqingshan.com/154.html

https://juejin.cn/post/7166197009291378702

官方文档,前端集成:https://api.onlyoffice.com/editors/open
官方文档,spring集成:https://api.onlyoffice.com/editors/example/javaspring

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,501评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,673评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,610评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,939评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,668评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,004评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,001评论 3 449
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,173评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,705评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,426评论 3 359
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,656评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,139评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,833评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,247评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,580评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,371评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,621评论 2 380

推荐阅读更多精彩内容