如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档

0、安装准备

如果是局域网,部署的电脑拥有固定ip(下文叫宿主机,切记)。电脑能打开cup的虚拟功能。如果部署到云主机,道理是一样的。

环境是win7以上,win10以下。Win10区别就是安装的docker软件不同而已。

第一步:确定电脑打开了cpu虚拟打开。https://jingyan.baidu.com/article/22fe7ced3b4c003002617f17.html

第二步:下载和安装docker toolbox,默认安装即可。下载地址http://get.daocloud.io/,下载支持旧版windows的docker toolbox,win10就直接下载docker了。

第三步:启动docker后在里面拉取Onlyoffice Document Server 的Docker镜像

1、拉取ONLYOFFICE Document Server 的Docker镜像

拉取镜像sudo docker pull onlyoffice/documentserver

建议用离线的:

(存出命令[email protected] ~/winfont

$ dockersave -o onlyofficedocumentserver.tar onlyoffice/documentserver)

dockerload < onlyofficedocumentserver.tar

2、启动——映射至9000端口

docker run-i-t-d-p9000:80onlyoffice/documentserver

3、替换容器onlyofficedocument server的字体

//进入容器(运行的镜像)内

$ dockerexec -it 38e27 /bin/bash

[email protected]:/#dir或者ls –al

[email protected]:~#cd /usr/share/fonts/

[email protected]:/usr/share/fonts#ls

truetype  X11

//删除文件夹X11

[email protected]:/usr/share/fonts#rm -R dir X11

rm:cannot remove dir: No such file or directory

[email protected]:/usr/share/fonts#ls

truetype

[email protected]:/usr/share/fonts#cd truetype

[email protected]:/usr/share/fonts/truetype#ls –al

[email protected]:/usr/share/fonts/truetype#ls -al

total462392

drwxr-xr-x11 root   root       4096 Feb 19 04:17 .

………………

//删除trutype文件夹下所有文件

[email protected]:/usr/share/fonts/truetype#rm -R dir *.*

rm:cannot remove dir: No such file or directory

[email protected]:/usr/share/fonts/truetype#rm -R dir *

rm:cannot remove dir: No such file or directory

rm:cannot remove custom: Device or resource busy

[email protected]:/usr/share/fonts/truetype#ls

custom

[email protected]:/usr/share/fonts/truetype#ls -al

total 12

drwxr-xr-x10 root root 4096 Feb 19 10:14 .

drwxr-xr-x  6 root root 4096 Feb 19 10:12 ..

drwxr-xr-x  2 root root 4096 Feb 19 03:48 custom

……

[email protected]:/usr/share/fonts/truetype#exit

exit

[email protected] ~/winfont

//将当前文件夹C:\Users\Administrator\下的winfont文件夹内的字体全部拷贝到容器的文件夹/usr/share/fonts/truetype中

$ tar -cv* | docker exec -i 6df tar x -C /usr/share/fonts/truetype

kaiu.ttf

msjh.ttc

msjhbd.ttc

msjhl.ttc

msyh.ttc

msyh.ttf

msyhbd.ttc

msyhl.ttc

simfang.ttf

simhei.ttf

simkai.ttf

simli.ttf

simsun.ttc

simsunb.ttf

simyou.ttf

……

[email protected] ~/winfont

//进入容器内

$ dockerexec -it 6df /bin/bash

[email protected]:/#sudo mkfontscale

[email protected]:/#sudo mkfontdir

[email protected]:/#sudo fc-cache -fv

/usr/share/fonts:caching, new cache contents: 0 fonts, 1 dirs

…………

fc-cache:succeeded

[email protected]:/#exit

exit

//退出容器

[email protected] ~/winfont

$ dockerexec 6df /usr/bin/documentserver-generate-allfonts.sh

GeneratingAllFonts.js, please wait...Done

onlyoffice-documentserver:docservice:stopped

onlyoffice-documentserver:docservice:started

onlyoffice-documentserver:converter:stopped

onlyoffice-documentserver:converter:started

4、二次开发EngineerCMS

4.1 协作编辑页面

[html] view plain copy

  1. <!DOCTYPE html>
  2. <html style="height: 100%;">
  3. <head>
  4. <title>fei-OnlyOffice</title>
  5. </head>
  6. <body style="height: 100%; margin: 0;">
  7. <dividdivid="placeholder" style="height: 100%"></div>
  8. <script type="text/javascript"src="http://安装docker电脑的ip:9000/web-apps/apps/api/documents/api.js"></script>
  9. <scripttypescripttype="text/javascript">
  10. //alert({{.Doc.FileName}});
  11. window.docEditor = newDocsAPI.DocEditor("placeholder",
  12. {
  13. "document": {
  14. "fileType": "{{.fileType}}",
  15. "key": "{{.Key}}",//"Khirz6zTPdfd7"
  16. "title": "{{.Doc.FileName}}",
  17. "url": "http://运行engineercms电脑的ip/attachment/onlyoffice/{{.Doc.FileName}}"
  18. },
  19. "documentType":"{{.documentType}}",
  20. "editorConfig": {
  21. "callbackUrl": "http:// 运行engineercms电脑的ip /url-to-callback?id={{.Doc.Id}}",
  22. "user": {
  23. "id": "{{.Uid}}",
  24. "name": "{{.Uname}}"
  25. },
  26. "lang": "zh-CN",//"en-US",
  27. },
  28. "height": "100%",
  29. "width": "100%"
  30. });
  31. </script>
  32. </body>
  33. </html>

4.2 协作页面的保存和回调

[plain] view plain copy

  1. type Callback struct {
  2. Key         string   `json:"key"`
  3. Status      int     `json:"status"`
  4. Url         string   `json:"url"`
  5. Changesurl  string  `json:"changesurl"`
  6. History     history `json:"history"`
  7. Users       []string `json:"users"`
  8. Actions     []action `json:"actions"`
  9. Lastsave    string  `json:"lastsave"`
  10. Notmodifiedbool     `json:"notmodified"`
  11. }
  12. type action struct {
  13. Type   int
  14. userid string
  15. }
  16. type history struct {
  17. changes       []change
  18. serverVersionstring
  19. }
  20. type change struct {
  21. created string
  22. User    User1
  23. }
  24. type User1 struct {
  25. id   string
  26. name string
  27. }
  28. //关闭浏览器标签后获取最新文档保存到文件夹
  29. func (c *OnlyController) UrltoCallback() {
  30. // pk1 :=c.Ctx.Input.RequestBody
  31. id :=c.Input().Get("id")
  32. //pid转成64为
  33. idNum, err :=strconv.ParseInt(id, 10, 64)
  34. if err != nil {
  35. beego.Error(err)
  36. }
  37. //根据附件id取得附件的prodid,路径
  38. onlyattachment,err := models.GetOnlyAttachbyId(idNum)
  39. if err != nil {
  40. beego.Error(err)
  41. }
  42. var callbackCallback
  43. json.Unmarshal(c.Ctx.Input.RequestBody,&callback)
  44. ifcallback.Status == 1 || callback.Status == 4 {
  45. c.Data["json"]= map[string]interface{}{"error": 0}
  46. c.ServeJSON()
  47. } else ifcallback.Status == 2 {
  48. resp, err :=http.Get(callback.Url)
  49. if err != nil{
  50. beego.Error(err)
  51. }
  52. body, err :=ioutil.ReadAll(resp.Body)
  53. if err != nil{
  54. beego.Error(err)
  55. }
  56. deferresp.Body.Close()
  57. if err != nil{
  58. beego.Error(err)
  59. }
  60. f, err :=os.OpenFile(".\\attachment\\onlyoffice\\"+onlyattachment.FileName,os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm)
  61. if err != nil{
  62. beego.Error(err)
  63. }
  64. deferf.Close()
  65. _, err =f.Write(body)
  66. if err != nil{
  67. beego.Error(err)
  68. } else {
  69. err =models.UpdateOnlyAttachment(idNum)
  70. if err !=nil {
  71. beego.Error(err)
  72. }
  73. }
  74. c.Data["json"]= map[string]interface{}{"error": 0}
  75. c.ServeJSON()
  76. }
  77. }

原文地址:http://blog.51cto.com/8200238/2085285

时间: 2024-10-29 11:50:32

如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档的相关文章

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序 由 Yutao 编辑 2 方法:下载FFmpeg在命令行中开启FFmpeg FFmpeg程序进行各种媒体格式的转换,从而它们可以在不同设备上播放.该程序只有命令行模式,因此将它安装到计算机中看上去有些令人生畏,但是只要根据本指南的方法,你只需要几分钟就可以将FFmpeg安装成功! 广告 方法 1: 下载FFmpeg 1 下载FFmpeg.访问下载页面时,你将看到很多不同下载选项.你可以根据自己的操作系统选择下载最新的32位或64位静态程序版本.广告 2

如何在windows上把你的项目提交到github(转载)

(1)如何在windows上把你的项目提交到githubhttp://michaelye1988.iteye.com/blog/1637951 (2)github错误提示:fatal:remote origin already existshttp://blog.csdn.net/dengjianqiang2011/article/details/9260435 (3)使用.gitignore过滤文件 http://www.zoneself.org/2012/11/16/content_2003

NET中weboffice组件在线编辑文档并保存到服务器上

页面中组件的引用以及控件触发事件: <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="9" background="images/tab_12.gif"> <asp:Button ID="btnuploadsave"

浅析如何在Nancy中使用Swagger生成API文档

原文:浅析如何在Nancy中使用Swagger生成API文档 前言 上一篇博客介绍了使用Nancy框架内部的方法来创建了一个简单到不能再简单的Document.但是还有许许多多的不足. 为了能稍微完善一下这个Document,这篇引用了当前流行的Swagger,以及另一个开源的Nancy.Swagger项目来完成今天的任务! 注:Swagger是已经相对成熟的了,但Nancy(2.0.0-clinteastwood)和Nancy.Swagger(2.2.6-alpha)是基于目前的最新版本,但目

Office 365 小技巧 :Microsoft Teams_ 就地编辑文档

Blog 地址:https://blog.51cto.com/13969817 Microsoft Teams 最大的特性是可以加强团队之间的协作能力,团队可以在同一个地方进行沟通和协作,并且与Microsoft Office深度集成,与团队成员进行文档共享,多人协同编辑,团队的工作方式发生了改变,工作效率得到了提升. 但很多企业在推广Teams的时候,终端用户都需要一个转型的过程,他们希望分享的文档可以就地编辑,保留传统的编辑模式,而非在线编辑,这种情况下,我们该如何满足用户的需求呢? 今天我

Core Web API上使用Swagger提供API文档

在ASP.NET Core Web API上使用Swagger提供API文档 我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页面后,在IISExpress启动Web API站点后,会自动重定向到API文档页面,非常方便.这不仅让我能够快速省查API设计的合理性,同时从API的使用角度也为我自己提供了便捷.下图就是我的博客系统RESTful API

实时监测contenteditable(可编辑文档)的内容发生改变

如果是文本框用onchange,oninput,onpropertychange都可以实时监控值发生变化,但是div设置了属性contenteditable(可编辑文档)就不管用了. 最简单的方法用oninput事件,可惜ie下支持度不好 addEvent(doc,'input',function(){ //do something... }); 那么自己实现一个: var oldValue = context.getSource(), newValue; ['blur','keyup','mo

[转载]linux上用PHP读取WORD文档

在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:http://www.winfield.demon.nl/ 下载地:http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz 下载完,解压,进入目录 使用命令 make && make install 即可完成安装. 安装时,自动安装到了/roo

织梦图集模型编辑文档checkbox多选字段失效逗号,被过滤问题

织梦图集模型编辑文档checkbox多选字段失效,还有tag标签的逗号,被过滤问题的解决方法 打开 include/helpers/filter.helper.php 找到 '/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/' 改成 '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S' 图集模型添加自定义字段checkbox数据类型,重新编辑时,勾选的多选全部没了. 打开/dede/album_edit.php 搜索 $arcRow=XSSClean