189 8069 5689

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

0、安装准备

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

创新互联成立十载来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供网站设计制作、成都网站设计、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

环境是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

建议用离线的:

(存出命令Administrator@604TFALNDKDKJWCMINGW64 ~/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

root@38e27823ae92:/#dir或者ls –al

 

root@6dfa5705aaef:~#cd /usr/share/fonts/

root@6dfa5705aaef:/usr/share/fonts#ls

truetype  X11

//删除文件夹X11

root@6dfa5705aaef:/usr/share/fonts#rm -R dir X11

rm:cannot remove dir: No such file or directory

root@6dfa5705aaef:/usr/share/fonts#ls

truetype

root@6dfa5705aaef:/usr/share/fonts#cd truetype

root@6dfa5705aaef:/usr/share/fonts/truetype#ls –al

root@6dfa5705aaef:/usr/share/fonts/truetype#ls -al

total462392

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

………………

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

root@6dfa5705aaef:/usr/share/fonts/truetype#rm -R dir *.*

rm:cannot remove dir: No such file or directory

root@6dfa5705aaef:/usr/share/fonts/truetype#rm -R dir *

rm:cannot remove dir: No such file or directory

rm:cannot remove custom: Device or resource busy

root@6dfa5705aaef:/usr/share/fonts/truetype#ls

custom

root@6dfa5705aaef:/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

……

 

root@6dfa5705aaef:/usr/share/fonts/truetype#exit

exit

 

Administrator@604TFALNDKDKJWCMINGW64 ~/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

……

 

Administrator@604TFALNDKDKJWCMINGW64 ~/winfont

//进入容器内

$ dockerexec -it 6df /bin/bash

root@6dfa5705aaef:/#sudo mkfontscale

root@6dfa5705aaef:/#sudo mkfontdir

root@6dfa5705aaef:/#sudo fc-cache -fv

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

…………

fc-cache:succeeded

root@6dfa5705aaef:/#exit

exit

//退出容器

Administrator@604TFALNDKDKJWCMINGW64 ~/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.   

  2.   

  3.   

  4.   

  5.   

  6.   

  7.    fei-OnlyOffice  

  8.   

  9.   

  10.   

  11.   

  12.   

  13.    

  14.   

  15.     

  

  •   

  •       

  •   

  •       

  •   

  •         //alert({{.Doc.FileName}});  

  •   

  •         window.docEditor = newDocsAPI.DocEditor("placeholder",  

  •   

  •             {  

  •   

  •                "document": {  

  •   

  •                    "fileType": "{{.fileType}}",  

  •   

  •                    "key": "{{.Key}}",//"Khirz6zTPdfd7"  

  •   

  •                    "title": "{{.Doc.FileName}}",  

  •   

  •                    "url": "http://运行engineercms电脑的ip/attachment/onlyoffice/{{.Doc.FileName}}"  

  •   

  •                 },  

  •   

  •                 "documentType":"{{.documentType}}",  

  •   

  •                "editorConfig": {  

  •   

  •                    "callbackUrl": "http:// 运行engineercms电脑的ip /url-to-callback?id={{.Doc.Id}}",  

  •   

  •                    "user": {  

  •   

  •                        "id": "{{.Uid}}",  

  •   

  •                        "name": "{{.Uname}}"  

  •   

  •                    },  

  •   

  •                    "lang": "zh-CN",//"en-US",  

  •   

  •                 },  

  •   

  •                "height": "100%",  

  •   

  •                "width": "100%"  

  •   

  •             });  

  •   

  •      

  •   

  •   

  •   

  •   

  • 4.2 协作页面的保存和回调

    [plain] view plain copy

    1. type Callback struct {  

    2.   

    3.    Key         string   `json:"key"`  

    4.   

    5.    Status      int     `json:"status"`  

    6.   

    7.    Url         string   `json:"url"`  

    8.   

    9.    Changesurl  string  `json:"changesurl"`  

    10.   

    11.    History     history `json:"history"`  

    12.   

    13.    Users       []string `json:"users"`  

    14.   

    15.    Actions     []action `json:"actions"`  

    16.   

    17.    Lastsave    string  `json:"lastsave"`  

    18.   

    19.    Notmodifiedbool     `json:"notmodified"`  

    20.   

    21. }  

    22.   

    23.    

    24.   

    25. type action struct {  

    26.   

    27.    Type   int  

    28.   

    29.    userid string  

    30.   

    31. }  

    32.   

    33.    

    34.   

    35. type history struct {  

    36.   

    37.    changes       []change  

    38.   

    39.    serverVersionstring  

    40.   

    41. }  

    42.   

    43.    

    44.   

    45. type change struct {  

    46.   

    47.    created string  

    48.   

    49.    User    User1  

    50.   

    51. }  

    52.   

    53.    

    54.   

    55. type User1 struct {  

    56.   

    57.    id   string  

    58.   

    59.    name string  

    60.   

    61. }  

    62.   

    63. //关闭浏览器标签后获取最新文档保存到文件夹  

    64.   

    65. func (c *OnlyController) UrltoCallback() {  

    66.   

    67.    // pk1 :=c.Ctx.Input.RequestBody  

    68.   

    69.    id :=c.Input().Get("id")  

    70.   

    71.    //pid转成64为  

    72.   

    73.    idNum, err :=strconv.ParseInt(id, 10, 64)  

    74.   

    75.    if err != nil {  

    76.   

    77.       beego.Error(err)  

    78.   

    79.    }  

    80.   

    81.    //根据附件id取得附件的prodid,路径  

    82.   

    83.    onlyattachment,err := models.GetOnlyAttachbyId(idNum)  

    84.   

    85.    if err != nil {  

    86.   

    87.       beego.Error(err)  

    88.   

    89.    }  

    90.   

    91.    

    92.   

    93.    var callbackCallback  

    94.   

    95.    json.Unmarshal(c.Ctx.Input.RequestBody,&callback)  

    96.   

    97.    

    98.   

    99.    ifcallback.Status == 1 || callback.Status == 4 {  

    100.   

    101.       c.Data["json"]= map[string]interface{}{"error": 0}  

    102.   

    103.       c.ServeJSON()  

    104.   

    105.    } else ifcallback.Status == 2 {  

    106.   

    107.       resp, err :=http.Get(callback.Url)  

    108.   

    109.       if err != nil{  

    110.   

    111.          beego.Error(err)  

    112.   

    113.       }  

    114.   

    115.       body, err :=ioutil.ReadAll(resp.Body)  

    116.   

    117.       if err != nil{  

    118.   

    119.          beego.Error(err)  

    120.   

    121.       }  

    122.   

    123.       deferresp.Body.Close()  

    124.   

    125.       if err != nil{  

    126.   

    127.          beego.Error(err)  

    128.   

    129.       }  

    130.   

    131.    

    132.   

    133.       f, err :=os.OpenFile(".\\attachment\\onlyoffice\\"+onlyattachment.FileName,os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm)  

    134.   

    135.       if err != nil{  

    136.   

    137.          beego.Error(err)  

    138.   

    139.       }  

    140.   

    141.       deferf.Close()  

    142.   

    143.       _, err =f.Write(body)  

    144.   

    145.       if err != nil{  

    146.   

    147.          beego.Error(err)  

    148.   

    149.       } else {  

    150.   

    151.          err =models.UpdateOnlyAttachment(idNum)  

    152.   

    153.          if err !=nil {  

    154.   

    155.             beego.Error(err)  

    156.   

    157.          }  

    158.   

    159.       }  

    160.   

    161.       c.Data["json"]= map[string]interface{}{"error": 0}  

    162.   

    163.       c.ServeJSON()  

    164.   

    165.    }  

    166.   

    167. }  

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


    文章题目:如何在Windows上使用ONLYOFFICE协作编辑文档
    标题网址:http://cdxtjz.cn/article/pphdsc.html

    其他资讯