赞
踩
废话不多说,能看到这篇文章的,多半对自己的需求已经很明确了,OnlyOffice能干什么就不描述了,上干货。
centos 7+docker,本文是以docker的形式进行onlyoffice部署,docker的方式比较简单。
下面这个是onlyoffice给出的环境要求
CPU: dual core 2 GHz or better
RAM:2 GB or more
HDD:at least 40 GB of free space
Additional requirements:at least 4 GB of swap
OS:amd64 Linux distribution with kernel version 3.10 or later
Additional requirements
Docker: version 1.10 or later
执行以下命令即可拉取镜像,下载过程需要一点时间:
sudo docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver
该命令拉取镜像后,onlyoffice已经启动了一个容器了。不过只映射了http的80端口,没有启动https,https的配置这里就不讲了,请参考官方文档;
浏览器访问:http://yourip/web-apps/apps/api/documents/api.js 你能看到以下页面就证明你的onlyoffice部署成功了。
链接:https://pan.baidu.com/s/1jwwTIQGLv4gGawY-pYRZJA 提取码:ssz9
准备docker的依赖(下载docker.zip解压即可)。
安装依赖时忽略依赖,将docker文件夹中的所有rpm进行安装:
rpm ivh docker/* --nodeps --force
安装好后,启动docker
systemctl daemon-reload
systemctl enable docker
systemctl start docker
注:上面的压缩包里面的镜像是我处理过的镜像,你可以下载干净的镜像做同样的操作
设置enforce:setenforce 0
导入镜像:
docker load < onlyoffice_ch_http.tar
后台启动:
docker run -i -t -d -p 80:80 onlyoffice/ch-en-http
官网上有一个springmvc+jsp的demo,这里就不讲了,讲下我的简单demo:
一个html+2个接口:
demo.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <style> html,body{width:100%;height: 100%;} #placeholder{ height: 100%; } </style> <body> <div id="placeholder" ></div> <script type="text/javascript" src="http://172.27.13.138:7000/web-apps/apps/api/documents/api.js"></script> <script> //这个配置在api.js里面有详细描述 var config = { "type": "desktop", "width": "100%", "height": "100%", "documentType": "text", "document": { "title": "demo.doc", //该url是onlyoffice下载文档的路径,注意这个url是onlyoffice容器可达的路径,不然你打开office会告诉你下载不了。 //留个问题:我在主机上启动文件下载服务,onlyoffice在docker里面,然后用虚拟ip段的192.168.206.1作为服务ip,在虚拟机里面肯定能ping通,并且也能正常访问url //,但是onlyoffice却无法下载文件,这是什么问题,请知道的大佬留言告知下。 "url": "http://172.27.13.188:7071/document/file/04cb6872e62c495c8708db06897ed618", "fileType": "doc", //key是onlyoffice下载文档格式化后存储到onlyoffice里面的key值,下次读取相同key值得文档时,不会再通过url加载。 "key": "14c2872e62c495c8708db06897ed618", "info": { "owner": "liuwanli_email@163.com", "uploaded": "2020-01-03T02:28:28.000+0000" }, //一些授权,都能懂得 "permissions": { "edit": true, "download": false, "review": true, "print": true, "changeHistory": false, "comment": true, "modifyFilter": true, "modifyContentControl": true, "fillForms": true } }, "editorConfig": { "mode": "edit", //en-ch 英文模式/zh-CN 中文模式,onlyoffice自身支持汉化,不存在网上那些加入字体后汉化的说法(我的版本是5.4.2-46),加入字体是在编辑文档的时候用的,后续会讲到 "lang": "zh-CN", "location": "zh-CN", "canCoAuthoring": false, //文档编辑的回调,在编辑完成后,关闭该页面后的10S左右,onlyoffice服务会通过该接口将编辑后的文档流推送过来 "callbackUrl": "http://172.27.13.188:7071/document/callback/?id=04cb6872e62c495c8708db06897ed618", "user": { "id": "zs", "name": "張三" }, "customization": { "chat": true, "comments": true, "zoom": 100, "compactToolbar": false, "leftMenu": false, "rightMenu": false, "hideRightMenu": true, "toolbar": true, "statusBar": true, "autosave": true, "forcesave": false, "commentAuthorOnly": false, "showReviewChanges": false, "help": false, "compactHeader": false, "toolbarNoTabs": false, "reviewDisplay": "original" }, }, } //点睛之笔 var docEditor = new DocsAPI.DocEditor("placeholder", config); </script> </body> </html>
所需的两个接口就在上面的html里面,下载文档的接口怎么写就不说了,不知道的面壁去。
callbackUrl:
注意几点:
1.接口是post
2.在页面打开的时候,页面会调用回调接口,传参status = 1,此时需要回调接口返回{“error”:“0”},0表示回调接口没问题,可以正常使用,这个样在后面关闭编辑页面后才会调用该接口。
@PostMapping("callback") public JSONObject callback(HttpServletRequest request, HttpServletResponse response) { JSONObject result = new JSONObject(); try { String body = ""; Scanner scanner = new Scanner(request.getInputStream()); scanner.useDelimiter("\\A"); body = scanner.hasNext() ? scanner.next() : ""; scanner.close(); if (body.isEmpty()) { result.put("msg","empty request.getInputStream"); } JSONObject jsonObj = JSON.parseObject(body); int status = (Integer) jsonObj.get("status"); int saved = 0; if(status == 2 || status == 3) //MustSave, Corrupted { String downloadUri = (String) jsonObj.get("url"); try { URL url = new URL(downloadUri); java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection(); InputStream stream = connection.getInputStream(); if (stream == null) { throw new Exception("Stream is null"); } String path = request.getParameter("path"); File savedFile = new File(upload_file_path+"/"+path); 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(); } catch (Exception ex) { saved = 1; ex.printStackTrace(); } } result.put("error",saved); } catch (IOException e) { result.put("error",-1); } return result; }
至此,office文档在线预览,编辑的环境部署完成。
下一篇文章讲解如何给onlyoffice添加字体,目前onlyoffice有一抹多不明所以的字体:
传送门:onlyoffice添加删除字体
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。