使用docker在線/離線部署onlyoffice,在線預覽/編輯demo

廢話不多說,能看到這篇文章的,多半對自己的需求已經很明確了,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

鏈接:https://pan.baidu.com/s/1ICyyFV3WiYdx1cW8xtICzA
提取碼:0m19

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": "[email protected]",
						"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添加刪除字體

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章