onlyOffice 開發相關 總結


onlyOffice 服務端 客戶端 相關開發整理


  • 功能:

  • 所有客戶端都可用

  • 雲端部署服務

  • 查看 預覽 doc ppt excel

  • 編輯

  • 權限控制

開發技術准備
  • 用戶服務器端 提供保存接口

  • 用戶瀏覽器端 提供生成文件 key 標示(刷新后重新生成)

安裝server 端
docker pull onlyoffice/documentserver

doc:
  ports:
  - 8686:80/tcp
  tty: true
  image: onlyoffice/documentserver
  volumes:
  - /home/www/DocumentServer/logs:/var/log/onlyoffice
  - /home/www/DocumentServer/data:/var/www/onlyoffice/Data
  - /home/www/DocumentServer/onlyoffice:/var/lib/onlyoffice
  - /home/www/DocumentServer/postgresql:/var/lib/postgresql
  stdin_open: true

應用端

注意相關參數

  • fileType 文件類型

  • key 標示編輯的唯一性 做多人編輯文件時 這個參數要一樣。 通常這個值是隨機生成 因為打開文件后文件會在documentServer 端 記錄此文件 該值用來標示編輯文件。

  • title

  • url 文件的具體路勁

    • callbackUrl 文件關閉后回調路勁 這個用來保存文件用的 文件編輯保存后 當你關閉窗口后 server端會請求把你在服務器上的編輯提交到這個路勁 ,所以這個路勁的代碼 一般就是上傳保存 ;

documentType 文件編輯類型 根據文件的類型 在客戶端用 不通的編輯器來編輯文件 主要三種 文檔類 text 表格類 ppt 類

<!DOCTYPE html>
<html style="height: 100%;">
<head>
    <title>ONLYOFFICE Api Documentation</title>
</head>
<body style="height: 100%; margin: 0;">
    <div id="placeholder" style="height: 100%"></div>
    <script type="text/javascript" src="http://documentserver/web-apps/apps/api/documents/api.js"></script>

    <script type="text/javascript">

        window.docEditor = new DocsAPI.DocEditor("placeholder",
            {
                "document": {
                    "fileType": "docx",
                    "key": "E7FAFC9C22A8",
                    "title": "Example Document Title.docx",
                    "url": "http://example.com/url-to-example-document.docx"
                },
                "documentType": "text",
                "editorConfig": {
                    "callbackUrl": "http://example.com/url-to-callback.ashx",
                },
                "height": "100%",
                "width": "100%"
            });

    </script>
</body>
</html>

修改后保存文件的回調代碼
  • 參考

之前保存問題折騰了兩天 其實很簡單 保存后回調 上傳回去 上傳回去的路勁和 打開文件的路勁一樣;

/**
 	 * 保存文件
 	 * @return [type] [description]
 	 */
 	public function saveFile()
 	{		 		

 		$path_for_save=$this->geturlpath($_GET['savefile']);// 讀取文件的路勁 文件名稱

		if (($body_stream = file_get_contents("php://input"))===FALSE){
		    echo "Bad Request";
		}

		$data = json_decode($body_stream, TRUE);

		if ($data["status"] == 2){
		    $downloadUri = $data["url"];
		        
		    if (($new_data = file_get_contents($downloadUri))===FALSE){
		        echo "Bad Response";
		    } else {
		        file_put_contents("newfile.txt", $downloadUri." \n", FILE_APPEND);
		        
		        
		        file_put_contents($path_for_save, $new_data, LOCK_EX);
		    }
		}
		echo "{\"error\":0}";
 	}

中文字體問題

拷貝中文字體到 容器的 /usr/shera/fonts/ 下 重啟 容器下運行 documentserver-generate-allfonts.sh

參考



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM