本文已参与「新人创作礼」活动,一同开启创作之路。 废话不多说,能看到这篇文章的,多半对自己的需求已经很清晰了,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
在线拉取onlyoffice镜像
履行以下指令即可拉取镜像,下载过程需求一点时间:
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部署成功了。
离线方式装置Onlyoffice
链接:pan.baidu.com/s/1jwwTIQGL… 提取码:ssz9
docker安裝
预备docker的依靠(下载docker.zip解压即可)。
装置依靠时疏忽依靠,将docker文件夹中的一切rpm进行装置:
rpm ivh docker/* –nodeps –force
装置好后,发动docker
systemctl daemon-reload systemctl enable docker systemctl start docker
导入onlyoffice镜像
注:上面的压缩包里边的镜像是我处理过的镜像,你能够下载洁净的镜像做相同的操作 设置enforce:setenforce 0
导入镜像: docker load < onlyoffice_ch_http.tar 后台发动: docker run -i -t -d -p 80:80 onlyoffice/ch-en-http
一个demo
官网上有一个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:
注意几点:
- 接口是post
- 在页面打开的时分,页面会调用回调接口,传参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添加删去字体