• 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." 
    ", FILE_APPEND);
    		        
    		        
    		        file_put_contents($path_for_save, $new_data, LOCK_EX);
    		    }
    		}
    		echo "{"error":0}";
     	}
    
    
    中文字体问题

    拷贝中文字体到 容器的 /usr/shera/fonts/ 下 重启 容器下运行 documentserver-generate-allfonts.sh

    参考


  • 相关阅读:
    Codeforces Round #249 (Div. 2) D. Special Grid 枚举
    图论二
    C语言中的atan和atan2(转)
    BestCoder Round #79 (div.2)
    数学
    LCA
    二分图
    动态规划
    线段树
    树状数组
  • 原文地址:https://www.cnblogs.com/freefei/p/7872095.html
Copyright © 2020-2023  润新知