如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档
1、說明——可以加我qq504284溝通。
ONLYOFFICE Document Server提供文檔協作的服務功能,支持Word,Excel和PowerPoint以及國產WPS的協作。但是這里告訴我們,需要進行文檔管理和存儲的二次開發。它api里現成的開發好的文檔管理平臺,有java,node.js,PHP等,可能不具備權限功能吧。
Please note, that?ONLYOFFICE Document Server?includes the?documenteditor,?document editing service,?document command service?and?documentconversion service.The?document manager?and?documentstorage service?areeither included to Community Server or must be implemented by the softwareintegrators who use ONLYOFFICE Document Server on their own server.
它自己的ONLYOFFICE/CommunityServer就是管理文件用的,是一個龐大的項目管理系統。
ONLYOFFICE CommunityServer is a free open source collaborative system developed to managedocuments, projects, customer relationship and email correspondence, all in oneplace.
Nextcloud,可道云等云盤系統也支持ONLYOFFICE協作服務,我用Golang語言開發的EngineerCMS來實現ONLYOFFICE的文檔管理和存儲,調用ONLYOFFICE Document Server服務來進行文檔協作,權限完全按照官方的community。
協作的好處在于少了來回傳遞文檔,少了匯總的負責人,特別是十多人合作編寫文檔的時候,匯總的工作量大,容易出錯,任何人稍微修改一點,都要重新傳遞整個文檔,匯總后還要再次發給大家核對……。
協作也可以應用于校審流程,校核和審查直接在文檔上修改即可。
其他如月報的合作,工作任務表的更新:每個人的任務表要隨時更新,除非用專業的任務管理軟件,否則用Excel表格的話,也是要負責人匯總更新表格,應付領導檢查。
會議紀要寫好了,把鏈接發給大家,有意見直接在上面修改補充。
投標要多人協作的話,用這個平臺也是不錯的。
報表的匯總。
市場上協作的平臺不下幾十種,著名的如石墨,一起寫,騰訊文檔協作TIM,Google Doc,office365,office online等,基本按人月收費,免費的有人數限制,并且想自己部署在局域網的話也不大可能。你的文檔上傳給他們或許有諸多不便呢。比如銀行的報表,嘿嘿,你懂的。
所以,我就在ONLYOFFICE Document Server基礎上用Golang語言開發了文檔管理和存儲功能,方便大家免費無限制任意部署的需求。
總的思路就是比如在局域網的某臺windows(推薦用linux-centos,因為很穩定)電腦上安裝docker容器來運行ONLYOFFICE Document Server,然后運行EngineerCMS來調用ONLYOFFICE Document Server的服務。在云服務器上部署也是一個道理。
ONLYOFFICE隨著版本的不斷更迭,功能越來越接近MSOFFICE,比如有文檔結構(word文檔導航),歷時版本的對照功能,excel里的文字刪除線、篩選、透視表等。
2、安裝準備
如果是局域網,部署的電腦擁有固定ip(下文叫宿主機,切記)。電腦能打開cup的虛擬功能。如果部署到云主機,道理是一樣的。
環境是win7以上,win10。Win10區別就是安裝的docker軟件不同而已(win10不要安裝docker toolbox了),win10不需要設置端口轉發。
linux就更簡單了。
第一步:確定電腦打開了cpu虛擬打開。https://jingyan.baidu.com/article/22fe7ced3b4c003002617f17.html
第二步:下載和安裝docker toolbox(win7)/docker(win10),默認安裝即可。下載地址DaoCloud | Docker 極速下載,下載支持舊版windows的docker toolbox。win10就直接下載docker了。切記,win7下安裝完成docker后,啟動docker的時候斷網,啟動后可以聯網。win10安裝完docker后在cmd里執行docker命令。
第三步:啟動docker后在里面拉取Onlyoffice Document Server 的Docker鏡像,然后運行即可。
下面過程看起來繁瑣,等你理解后其實就2步:安裝docker,拉取鏡像(或導入離線包),然后運行。再就是在文檔管理平臺上配置一下IP和端口。
3、拉取ONLYOFFICE Document Server 的Docker鏡像(可選)
拉取鏡像:啟動docker,在里面輸入命令docker pull onlyoffice/documentserver
(注意:win7下的docker要斷網啟動!!切記,啟動后再聯網。如果已經運行了onlyoffice document server, 下次開機,重新啟動docker后,不需要再運行onlyoffice的,當你啟動docker后,OO已經啟動了)
可以用我做好的鏡像導入(離線包導入),已經導入好了中文字體,修正了幾個翻譯錯誤,可以省略第5步,從第4步直接跳過第5步到第6步。
建議用離線的,導入離線包命令為:docker load < fei6onlyoffice5.4.2.tar
fei6onlyoffice5.4.2.tar,這個包解決了中文字體名稱問題。
下載放到docker命令行對應的目錄下,方便運行命令導入(load)這個鏡像。一般在c盤-users-administrator或者其他用戶名下(在docker命令行里輸入dir,看看當前目錄下有哪些文件,一般就能找到這個目錄了。)
4、啟動——映射至9000端口(運行鏡像后變成容器)
docker run?-i?-t?-d?-p?9000:80?onlyoffice/documentserver
如果是導入的鏡像,上面的命令中onlyoffice/documentserver用鏡像id代替,查閱鏡像用docker images命令。
運行后就可以通過http://192.168.99.100:9000訪問OO服務的歡迎界面了,運行后的我們稱之為容器。
5、添加容器onlyofficedocument server的字體(可省略)
在網盤中下載字體winfont壓縮包。字體來源于GitHub - neroxps/Docker-Only-Office-Chinese-font和win10系統,win10系統提取中文字體的方法:控制面板——搜字體——查看安裝的字體——再在搜索欄輸入中文 2個字,這些就是需要的中文字體了。OO首次加載會比較慢,因為加載中文字體,一般達到50M以上。需要精簡字體的方法,可以查閱網絡或找我。
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
//進入容器內
$ docker exec -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
$ docker exec 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
?如果機器重啟后,斷網情況下啟動docker,此時不需要再運行docker run命令,OO服務已經隨DOCKER啟動了。
完成后記得清理chrome瀏覽器緩存,否則新導入的字體不會生效。chrome瀏覽器:設置—高級—隱私設置和安全性—清除瀏覽數據—時間范圍選擇時間不限……
具體替換字體的命令見下圖,很詳細具體了。
插圖上寫的界面漢化不對,這些只是導入中文字體而已,和界面漢化無關。界面中漢化其實就是在頁面中將?"lang": "zh-CN"
修正excel、word、ppt翻譯錯誤:
Administrator@604TFALNDKDKJWC MINGW64 ~/zh
$ docker exec -it 6df /bin/bash
root@6dfa5705aaef:/#cd /var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/locale/
root@6dfa5705aaef:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/locale#ls
cs.json?en.json? fr.json? ja.json?nl.json? pt.json? sk.json?tr.json? vi.json
de.json?es.json? it.json? lv.json?pl.json? ru.json? sl.json?uk.json? zh.json
root@6dfa5705aaef:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/locale#exit
exit
Administrator@604TFALNDKDKJWC MINGW64 ~/zh
$ tar-cv zh.json | docker exec -i 6df tar x -C /var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/locale/
zh.json
word的翻譯文件/var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/locale/
$ tar-cv zh.json | docker exec -i 6df tar x -C /var/www/onlyoffice/documentserver/web-apps/apps/documenteditor/main/locale/
6、還可以替換幫助文件為中文……
/var/www/onlyoffice/documentserver/apps/presentationeditor/main/resources/help/zh/Contents.json
/var/www/onlyoffice/documentserver/apps/spreadsheeteditor/main/resources/help/zh/Contents.json
/var/www/onlyoffice/documentserver/apps/documenteditor/main/resources/help/zh/Contents.json
做完以上工作,你可以將修改后的容器保存為新的鏡像,然后save導出后給其他機器用。
docker commit將修改后鏡像保存到本地,參數是容器ID,新名字:版本標志
#docker ps -all
CONTAINER ID IMAGE???COMMAND??? CREATED?????? STATUS????????? PORTS?? NAMES
b3426410ff43 centos:7?"/bin/bash" 4 minutes ago???Exited (0) 4 seconds ago?????centos7ssh
#docker commit b59myimage/centos7-ssh(這個是例子)
下次可以輸入剛保存的名字啟動修改了字體的鏡像了。
導出鏡像——一定要導出保存,否則docker經常自己升級,容器啊,鏡像啊,都會丟失,追悔莫及。
所以,啟動docker的時候要關閉網絡,否則它自動升級。等docker完全啟動后,再打開網絡。
docker save -o onlyoffice.tar onlyoffice/documentserver
6、運行和修改文檔管理平臺EngineerCMS
你可以直接去https://github.com/3xxx/engineercms查看源碼,自己編譯。
也可以去鏈接:https://pan.baidu.com/s/1f4zuhoymaHMN_QAEgZLwOg?
提取碼:upvm下載軟件包,直接運行engineercms即可用瀏覽器chrome訪問127.0.0.1了,不用配置環境,因為它是golang語言編寫的跨平臺的可執行文件。如果運行出現閃退,則在conf文件夾下更改app.conf文件中的端口號,或者修改runmode為prod模式。
(1)運行前要配置conf/app.conf文件里的
#####配置onlyoffice#####
####1.onlyoffice的服務ip和端口號,以及engineercms的ip和端口號。
(2)docker toolbox訪問前要按照下文中第7節中的方法設置宿主機(安裝docker的電腦)virtualbox的端口轉發。win10的windows docker不用設置端口轉發了。
有問題聯系我QQ504284,微信hotqin999
hotqin888的專欄_q平面人_CSDN博客
7、端口轉發
windows7上使用docker容器_maodou95838的專欄-CSDN博客
前文第4節運行ONLYOFFICE DOCUMENT SERVER:
docker run?-i?-t?-d?-p?9000:80?onlyoffice/documentserver
-d:后臺運行?
-p 9000:80 :端口映射,前一個9000代表虛擬機的端口,后一個80代表docker容器的端口?
命令執行完成后,可以通過http://192.168.99.100:9000訪問OO服務的歡迎界面。
這時只能在你自己的機器上訪問,同一個局域網中的其他機器是不能訪問的,原因是:Windows上的docker是運行在一個虛擬機里面的,看官方給的圖:?
?要讓別的機器也訪問到,需要配置一下虛擬機。設置如下:?
雙擊運行安裝docker toolbox生成的Oracle VMVirtualBox。
點擊端口轉發:下圖中主機IP為安裝docker的電腦IP,主機端口為9000,子系統IP為192.168.99.100,子系統端口為9000。
這樣配置完成后,別的機器也可以訪問docker 容器了。
下文的開發僅供興趣參考。
8、二次開發engineercms
8.1 協作編輯頁面
<!DOCTYPE html> <html style="height: 100%;"> <head><title>fei-OnlyOffice</title> </head> <body style="height: 100%; margin: 0;"><divid="placeholder" style="height: 100%"></div><script type="text/javascript"src="http://安裝docker電腦的ip:9000/web-apps/apps/api/documents/api.js"></script><scripttype="text/javascript">//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%"});</script> </body> </html>8.2 協作頁面的保存和回調——下面是go語言,官方文檔有php java node.js等。
type Callback struct {Key string `json:"key"`Status int `json:"status"`Url string `json:"url"`Changesurl string `json:"changesurl"`History history `json:"history"`Users []string `json:"users"`Actions []action `json:"actions"`Lastsave string `json:"lastsave"`Notmodifiedbool `json:"notmodified"` } type action struct {Type intuserid string } type history struct {changes []changeserverVersionstring } type change struct {created stringUser User1 }type User1 struct {id stringname string }//關閉瀏覽器標簽后獲取最新文檔保存到文件夾 func (c *OnlyController) UrltoCallback() {// pk1 :=c.Ctx.Input.RequestBodyid :=c.Input().Get("id")//pid轉成64為idNum, err :=strconv.ParseInt(id, 10, 64)if err != nil {beego.Error(err)}//根據附件id取得附件的prodid,路徑onlyattachment,err := models.GetOnlyAttachbyId(idNum)if err != nil {beego.Error(err)}var callbackCallbackjson.Unmarshal(c.Ctx.Input.RequestBody,&callback)ifcallback.Status == 1 || callback.Status == 4 {c.Data["json"]= map[string]interface{}{"error": 0}c.ServeJSON()} else ifcallback.Status == 2 {resp, err :=http.Get(callback.Url)if err != nil{beego.Error(err)}body, err :=ioutil.ReadAll(resp.Body)if err != nil{beego.Error(err)}deferresp.Body.Close()if err != nil{beego.Error(err)}f, err :=os.create(".\\attachment\\onlyoffice\\"+onlyattachment.FileName)if err != nil{beego.Error(err)}deferf.Close()_, err =f.Write(body)if err != nil{beego.Error(err)} else {err =models.UpdateOnlyAttachment(idNum)if err !=nil {beego.Error(err)}}c.Data["json"]= map[string]interface{}{"error": 0}c.ServeJSON()} }engineercms的文檔管理: 根據官方community的樣子,做了權限管理和歷時版本對照功能。
?word文件協作效果:
總結
以上是生活随笔為你收集整理的如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译原理支配树部分名词介绍
- 下一篇: 手机获取短信验证码登陆