Collabora Online 预览 Office

目录

前言

Collabora Online安装

配置

启动

测试

集成JAVA

Docker集成

修改

问题


  • 前言

本文仅介绍通过在centos7服务器搭建Collabora Online (23.05.0.5)私服进行office文件预览(编辑没有研究),本文,本文内容大都是摸索的结论,若有不对,请指正。下面进入正题。

目前了解到免费的解决方案有以下几种:

  1. Onlyoffice:好用,如果单机部署可以选它了。但是:它的缓存文件是放在服务器上,在文件加载的时候是多次向后端请求加载资源,即如果是集群部署需要挂nas盘进行共享缓存文件。由于我们应用部署在公司内部私有云上,据说很难挂nas,另外应用网络链路很复杂,没有做会话保持,遂放弃~
  2. Office Online Server:未体验。主要是目前我们应用部署在centos服务器,而微软这个需要部署在win server,不搭,放弃~
  3. Collabora Online:基于libreoffice的office在线服务,目前觉得就它合适我们系统。
  4. Kkfileview:文件覆盖很全,感谢作者开源。但是遇到大文件时,还是有OOM的情况,另外就是感觉性能不是很好,可能是错觉。
  • Collabora Online安装

主要两种涉及安装方式

  1. docker安装:docker安装
  2. 通过安装包安装:package安装

其它安装也直接参考官网自行选择:CollaboraOnline安装

下面介绍离线安装,如果centos通过安装包没有成功,(我按照官网的安装没有成功),可以参考以下点:

  1. 下载 key 地址 :key地址
  2. 通过yum进行下载
    1. 安装命令
  1. yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-rpm
  2. yum install coolwsd collabora-online-brand  

    1. 如果已安装可用下面命令重新下载

yum reinstall --downloadonly  coolwsd collabora-online-brand

  1. 把下载后的文件打包到内网服务器进行安装

yum localinstall -y *.rpm

  • 配置

配置可以参照:官网配置参考地址

配置文件为:/etc/coolwsd/coolwsd.xml文档里注释也很全面,如果预览不了文件的,基本上可以看报错日志进行修改配置解决。

主要注意点:

  1. 是否启用https,参考 :SSL configuration:

https://sdk.collaboraonline.com/docs/installation/Configuration.html#ssl-configuration

  1. 管理端:Admin Console:

https://sdk.collaboraonline.com/docs/installation/Configuration.html#admin-console

  • 启动

参考:Configuration — SDK https://sdk.collaboraonline.com/ documentation

启动成功,可以看下是否ok

curl -v http://ip:9980/

  • 测试

官网提供了一些接入案例:案例

以nodejs为例

wopi相关参考文章:wopi

主要是你的需要提供下面几个接口

目前demo中提供的是预览文字,也可以指向文件流,res.send改成res.download

coolwsd自带了一些案例,具体可以见framed.doc.html,里面提供了postmessage相关功能使用案例

服务器上的地址路径参考如下:

  • 集成JAVA

采用前后端分离,后端是java,主要提供token验证以及wopi的三个服务

代码参考

注意点:

  1. 如果后端服务地址是:ip:port/XXXX/doc/wopi/file....

需要配置 coolwsd.xml中的server_root

  1. 如果后端发现资源请求不到,例如你的前端需要经过代理才能到后端服务,可能会导致访问路径问题,具体请F12看下你的前端请求,可通过server_name解决。
  2. 嵌套iframe有跨域问题,默认wopi服务器是受信任的。需要设置frame_ancestors添加的你ip或者域名
  3. 第一次访问有个弹窗,时不时也有个反馈提示,要关闭的,需要再coolwsd.xml添加如下配置,具体逻辑可见源码FileFerver.cpp

  • Docker集成

主要是我们的容器不止一个应用

整体思路:

  1. coolwsd.xml配置文件COPY到我们镜像
  2. 在容器启动后把hosts需要添加的内容加载进去

注意点:

  1. 我们的容器还有些其他的服务,我没有将coolwsd服务自启动搞成功,所以在容器启动的时候通过脚本启动,但是我们云上环境不让特权模式启动容器,只能走替换systemctl:如何在Docker里面使用systemctl - Ehds
  2. 镜像启动需要保证它不退出:利用tail -f /dev/null命令防止container启动后退出 
  3. 如果指定自定义日志文件,需要将文件夹权限用户改为cool
  4. 目前还不知道怎么修改默认端口9980,采用了nginx或者rinetd进行转发,需要注意配置websocket转发
  • 修改

Word预览,把canuserwrite:true 感觉更像word,但是这个模式下用户可以修改文档。

思路,在编辑模式下,将菜单屏蔽,键盘屏蔽,鼠标右键屏蔽。

主要修改点,bundle.js,分析源码得知这个js是src目录下的js汇总,不过该js是压缩过的,要么自己重新汇总这个文件,要么将这个js“格式化”。由于chrome浏览器可以将js格式化显示,就不用自己去打包了。在httppost处理MessageId那堆逻辑后面加上需要自定义的逻辑(下面仅是其它逻辑的代码)

 

  • 问题

在文件较大时,服务器存在cpu瞬时飙升

Httppost: Close_Session好像不太好使,干嘛的?

鼠标右键屏蔽没有无法生效,原因未知

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值