onlyOffice 开发相关 总结
2017-11-21 10:52 freefei 阅读(10307) 评论(14) 编辑 收藏 举报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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架