springboot+vue項目如何集成onlyoffice開源文檔組件

一、onlyoffice是什么

ONLYOFFICE 是一個開源的辦公套件,適合多人在線協作。由總部位于總部在拉脫維亞的 IT 公司Acensio System SIA 開發。它提供在線協作文檔編輯器(包括文檔、電子表格、演示文稿和表單),適用于 Windows、Linux、macOS、Android 和 iOS 系統。也可以將 ONLYOFFICE 集成到學習管理平臺、同步與共享平臺、企業管理系統等,甚至集成到你自己的應用程序中。ONLYOFFICE同微軟office、金山WPS的功能相似,可以看成是同一類軟件產品,但ONLYOFFICE的源代碼是開源的。另外,表單Forms是ONLYOFFICE 的一大特色功能,能直接在編輯器內創建表單,可以實現類似于web表單功能和精細化權限控制。

ONLYOFFICE比MS OFFICE、WPS更強大的功能就是插件機制,支持安裝豐富的插件,比如OCR、ChatGPT、自動翻譯、視頻通話、文本轉換、生成參考文獻、拼寫檢查等,大部分插件都免費使用的,可以在線安裝。

ONLYOFFICE支持集成ChatGPT插件。ChatGPT是由人工智能研究實驗室OpenAI在2022年11月30日發布的全新聊天機器人模型,一款技術驅動的自然語言處理工具。它能夠通過學習和理解人類的語言來進行對話,還能根據聊天的上下文進行互動,真正像人類一樣來聊天交流,甚至能完成撰寫郵件、視頻腳本、文案、翻譯、代碼等任務。在插件管理器中,找到?ChatGPT?并點擊安裝

運行ChatGPT,輸入對應的密鑰(需要通過科學上網,在OpenAI官網?(opens new window)中獲取API Key,目前國內用戶無法注冊獲取。 ),然后就在可以在onlyoffice中使用ChatGPT了。

ONLYOFFICE的插件機制為開發者提供了極大靈活性,開發者可以通過底層API接口自定義插件實現業務上復雜需求,比如:協同辦公OA項目收發文的正文創建、編輯和下載;合同管理項目中合同協議的自動生成等。云程低代碼開發平臺(http://www.yunchengxc.com)對開源版ONLYOFFICE進行了集成整合,可以表單和流程中直接使用office文檔控件,并可配置文檔模版路徑,表單字段值自動帶入,控制文檔是否可編輯,文檔是否只讀,是否加載水印,是否可以打印,是否可以另存下載,是否需要留痕,是否顯示留痕等權限。

二、項目如何集成onlyoffice

在springboot+vue項目中集成開源版onlyoffice組件,如果是私有化部署的項目,首先需要部署onlyoffice后端服務,然后使用onlyoffice的前端API進行web集成調用。

1、安裝onlyoffice后端服務

onlyoffice后端服務安裝依賴RabbitMQ、RedisPostgreSQL這些服務,支持在windows、Linux下安裝,也支持docker安裝。安裝方法這里不再展開描述,詳細請參考官方安裝文檔:https://www.onlyoffice.org.cn/guide/docker-onlyoffice.html

2、Web前端集成onlyoffice

?onlyoffice提供了基于Javascript的API接口,

https://documentserver/web-apps/apps/api/documents/api.js

Web前端調用示例如下:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>ONLYOFFICE使用方法</title><!-- 引入外部JavaScript文件 --><script type="text/javascript"?src="https://documentserver/web-apps/apps/api/documents/api.js"></script></head><body><div id="placeholder"></div><script language="javascript"?type="text/javascript">var?docEditor =?new?DocsAPI.DocEditor("placeholder",{"document":?{"fileType":?"docx","key":?"Khirz6zTPdfd7","title":?"Example Document Title.docx","url":?"https://example.com/url-to-example-document.docx"},"documentType":?"word","editorConfig":?{"callbackUrl":?"https://example.com/url-to-callback.ashx"}});</script></body></html>

另外,onlyoffice還提供了vue、React?、Angular?語言的組件,可以在您的項目中從 npm 安裝 ONLYOFFICE 文檔相關組件

npm install --save @onlyoffice/document-editor-vue

npm install --save @onlyoffice/document-editor-react

npm install --save @onlyoffice/document-editor-angular

3、onlyoffice關鍵功能的API接口

業務系統中集成onlyoffice,常常涉及到的功能有:模版路徑配置,表單字段自動帶值,文檔是否可編輯,文檔是否只讀,是否加載水印,是否可以打印,是否可以另存下載,是否需要留痕,是否顯示留痕等權限,onlyoffice分別提供了相關的API接口。

序號

onlyoffice功能點/權限

對應onlyoffice的API接口/參數

1

表單字段自動帶值

對應插件里寫法:

window.Asc.plugin.executeMethod ("GetFormsByTag", [標簽名], function (res) {

this.Asc.plugin.executeMethod ("SetFormValue", [res[0].InternalId,設置的值]);

});

2

文檔是否可編輯

editorConfig.mode?值edit:編輯 view:預覽

同時document.permissions.edit 值設置為true

3

是否可以打印

document.permissions.print 值設置為true

4

是否可以另存下載

document.permissions.download值設置為true

5

是否需要留痕

document.permission.edit 設置為 false(該值設置為true則用戶自己能夠編輯文檔,接受/拒絕所做的更改并切換到審閱模式)

document.permission.review 設置為 true

editorConfig.mode?設置為edit

6

是否顯示留痕

editorConfig.customization.review.reviewDisplay

markup - 標記批注框

simple - 僅標記

final - 最終版(不可編輯)

original - 原始版(不可編輯)

更多api請參考官方文檔:https://api.onlyoffice.com

4、自定義插件實現表單字段自動帶值

在OA電子公文、合同管理等業務系統中,常常需要把web表單字段的值自動帶入到word文檔中,比如:合同編號、合同標題等字段,如果使用微軟office,可以使用窗體域結合vba編程,實現字段值自動同步。Onlyoffice 提供了強大的插件機制,可以自定義插件插件實現表單字段值自動帶入功能。

我們先來看下onlyoffice插件目錄結構:

.

├── config.json ?????# 插件配置文件

├── icon.png ????????# 插件圖標

├── index.html ??????# 插件入口文件

├── interface.js ????# 插件功能實現

├── plugins.js???????# 插件主程序入口文件

└── translations ????# 國際化配置

????└── zh-CN.json

插件結構非常簡單,里面主要是?config.json、index.htmlplugins.js?和?interface.js。需要保證config.json、index.html、interface.js、plugins.js這四個文件在同一個文件夾當中, 然后將文件夾放入到容器內的/var/www/onlyoffice/documentserver/sdkjs-plugins目錄下, 重啟即可。

# config.json參數說明

{"guid": "asc.{11700c35-1fdb-4e37-9edb-b31637139601}","variations": [{"url": "index.html","EditorsSupport": ["word", "cell", "slide"],"isSystem": true,"initDataType": "none","initData": "","buttons": [],"events" : ["onClick"]}]}

- guid:插件的唯一值, 可自行更改, 但格式必須是asc.{}

- url: 在本插件中該html的作用主要是用來加載js

- EditorsSupport:聲明該插件在word、excel、ppt可用

- isSystem:設置該值為true后在菜單欄中不顯示該插件, 后臺自動運行該插件

- events:聲明事件

其他參數請看官方文檔:https://api.onlyoffice.com/plugin/config

plugins.js一般在onlyoffice容器內的/var/www/onlyoffice/documentserver/sdkjs-plugins/v1目錄下, 可以直接從里邊拿過來復用。

?interface.js就是插件功能的邏輯了,以下是interface.js代碼,主要實現了表單字段自動帶值功能。

(function(window, undefined) {var AscPlugin = window.Asc.plugin;var executeMethod = function(method, arg) {return window.Asc.plugin.executeMethod(method, arg);};AscPlugin.init = function(initData) {// 避免綁定多次if(!window['boundInternalcommand']){// 該事件監聽似乎在7.x版本后就失效了 我還沒嘗試過window.parent.Common.Gateway.on('internalcommand', function(args) {// 如果需要自定義插件的功能, 只需要在這個方法里接受參數寫邏輯就行var data = args.data;var command = args.command;//設置表單字段值if(command=="SetFormValue"){window.Asc.plugin.executeMethod ("GetFormsByTag", [data[0]], function (res) {this.Asc.plugin.executeMethod ("SetFormValue", [res[0].InternalId,data[1]]);});}else if(command=="GetFileToDownload"){//獲取文件window.Asc.plugin.executeMethod ("GetFileToDownload", Array.isArray(data) ? data : [data], function(res){var obj = {"cmd":"GetFileToDownload","url":res}window.parent.parent.postMessage(JSON.stringify(obj), "*");});}else{(Array.isArray(data) ? data : [data]).forEach(function(arg, index) {// 6.x版本中的api不支持批量的操作, 只能單個插入, 這里需要一個定時器才能做到批量的插入, 否則會報錯或者什么都不插入setTimeout(function() {executeMethod(command, [arg]);}, 100 * index);});}});window['boundInternalcommand'] = true;}// 在插件彈出窗外釋放鼠標時觸發AscPlugin.onExternalMouseUp = function() {var event = document.createEvent('MouseEvents');event.initMouseEvent('mouseup', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);document.dispatchEvent(event);};AscPlugin.button = function(id) {// 關閉插件彈出窗觸發if (id === -1) {this.executeCommand('close', '');}};};})(window, undefined);

核心代碼:

window.Asc.plugin.executeMethod ("GetFormsByTag", [data[0]], function (res) {

this.Asc.plugin.executeMethod ("SetFormValue", [res[0].InternalId,data[1]]);

});

GetFormsByTag:根據標簽獲取表單控件

SetFormValue:設置表單控件值

插件調用:

this.docEditor.serviceCommand("SetFormValue", [tagName,value]);

最后實現的效果如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python tkinter使用(五)

python tkinter使用(五) 本篇文章講述tkinter 中treeview的使用 Treeview是一個多列列表框&#xff0c;可以顯示層次數據。 #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/11/23 下午8:28 .Email:Describe: treeview 使用 "&quo…

項目經理面試題持續更新

1.項目中常用的文檔有哪些&#xff1f; 1、可行性報告 可行性報告的目的是調查和展示任務要求&#xff0c;并確定項目是否值得和可行。可行性由五個主要因素驗證——技術和系統、成本、法律、運營和進度。次要可行性因素包括市場、資源和文化因素。 2、項目章程 項目章程是證明…

Linux上自動掛載windows下的網絡共享文件夾

比如我們想在ubuntu上掛載一個windows的共享文件夾&#xff0c;我們可以用如下方式實現。 首先我們將windows下的文件夾右鍵選擇【屬性】&#xff0c;然后選擇【共享】。 選擇需要共享的用戶&#xff0c;然后設置權限級別。 點擊共享&#xff0c;然后點擊完成。 這樣我們在wi…

Go語言網絡爬蟲工程經驗分享:pholcus庫演示抓取頭條新聞的實例

網絡爬蟲是一種自動從互聯網上獲取數據的程序&#xff0c;它可以用于各種目的&#xff0c;如數據分析、信息檢索、競爭情報等。網絡爬蟲的實現方式有很多&#xff0c;不同的編程語言和框架都有各自的優勢和特點。在本文中&#xff0c;我將介紹一種使用Go語言和pholcus庫的網絡爬…

基于opencv+ImageAI+tensorflow的智能動漫人物識別系統——深度學習算法應用(含python、JS、模型源碼)+數據集(一)

目錄 前言總體設計系統整體結構圖系統流程圖 運行環境爬蟲1.安裝Anaconda2.安裝Python3.63.更換pip源4.安裝Python包5.下載phantomjs 模型訓練1.安裝依賴2.安裝lmageAl 實際應用1.前端2.安裝Flask3.安裝Nginx 相關其它博客工程源代碼下載其它資料下載 前言 本項目通過爬蟲技術…

Word怎么看字數?簡單教程分享!

“我在寫文章時&#xff0c;總是想看看寫了多少字。但是我發現我的Word無法看到字數。在Word中應該怎么查看字數呢&#xff1f;請幫幫我&#xff01;” Word是一個廣泛使用的文檔編輯工具。在我們編輯文章時&#xff0c;如果想查看寫了多少字&#xff0c;也是可以輕松完成的。 …

leetcode:環形鏈表的入環點

題目描述 題目鏈接:力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 題目分析 我們假設起點到環的入口點的距離是L&#xff0c;入口點到相遇點的距離是X&#xff0c;環的長度是C 那么畫圖我們可以得知&#xff1a; 從開始到相遇時slow走的距離是LX從…

Adobe的組織工具程序Bridge 2024 版本下載與安裝

目錄 前言一、Bridge 2024安裝二、使用配置總結 前言 Adobe Bridge是由 Adobe 公司開發的一款用于管理和組織創意資產的工具。它是Adobe Creative Cloud 套件的一部分&#xff0c;為設計師、攝影師和其他創意專業人員提供了一個集中管理和瀏覽其多媒體文件的平臺。注&#xff…

Ubuntu開機顯示No bootable devices found

Ubuntu開機報錯&#xff0c;顯示顯示No bootable devices found&#xff0c;如下圖所示&#xff1a; 解決方案如下&#xff1a; 1. F2進入BIOS (1) 重啟開啟&#xff0c;按F2進入BIOS系統。 (2) 進入Boot Sequence&#xff0c;目前系統選擇了UEFI&#xff0c;而Legacy選項為…

Android : AlertDialog對話框、單選、多選、適配器-簡單應用

示例圖&#xff1a; 1 &#xff1a;創建 AlertDialog.Builder 對象&#xff1b; 2 &#xff1a;調用 setIcon() 設置圖標&#xff0c; setTitle() 或 setCustomTitle() 設置標題&#xff1b; 3 &#xff1a;設置對話框的內容&#xff1a; setMessage() 還有其他方法來指定顯示…

【每日一題】2824. 統計和小于目標的下標對數目-2023.11.24

題目&#xff1a; 2824. 統計和小于目標的下標對數目 給你一個下標從 0 開始長度為 n 的整數數組 nums 和一個整數 target &#xff0c;請你返回滿足 0 < i < j < n 且 nums[i] nums[j] < target 的下標對 (i, j) 的數目。 示例 1&#xff1a; 輸入&#xff1…

雙12電視盒子什么牌子好?數碼小編力薦目前最強的電視盒子

最近想買電視盒子的網友非常多&#xff0c;小編收到了很多關于電視盒子方面的咨詢&#xff0c;因此我特意整理了今年測評過的電視盒子&#xff0c;總結了五款目前最強的電視盒子&#xff0c;想知道雙十二買電視盒子什么牌子好就趕緊收藏起來吧。 推薦一&#xff1a;泰捷WEBOX新…

01 LM 算法及 Cpp 實現

文章目錄 01 LM 算法及 Cpp 實現1.1 應用1.2 阻尼法推導1.3 Cpp 算法實現 01 LM 算法及 Cpp 實現 1.1 應用 LM 算法用于解決非線性最小二乘問題 min ? x F ( x ) 1 2 ∥ f ( x ) ∥ 2 2 (1) \min _x F(x)\frac{1}{2}\|f(\boldsymbol{x})\|_2^2 \tag{1} xmin?F(x)21?∥f(x…

代理模式 rust和java的實現

文章目錄 代理模式介紹實現javarust rust倉庫 代理模式 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一個類代表另一個類的功能。在代理模式中&#xff0c;我們創建具有現有對象的對象&#xff0c;以便向外界提供功能接口。 介紹 意圖&#xff1a;為其他對…

jquery中ajax總結

在ajax請求接口的時候&#xff0c;常用到以下參數&#xff0c;在這里記錄下 contentType用于告訴服務器請求的數據類型&#xff0c;常見的有 text/html&#xff1a;HTML網頁 text/plain&#xff1a;純文本 application/json&#xff1a;JSON格式 application/xml&#xff1a;XM…

“KeyarchOS:國產Linux新星的崛起與創新之路“

簡介 KeyarchOS是一款由浪潮信息自主研發的服務器操作系統。它因為幾個特點而受到我的青睞和一些用戶的關注。 首先&#xff0c;KeyarchOS注重安全性和穩定性。它有一些防護和隔離功能&#xff0c;來幫助系統穩定運行&#xff0c;而且是中文語言更接地氣。 其次&#xff0c;Ke…

OSG編程指南<十>:OSG幾何體的繪制

1、場景基本繪圖類 在 OSG 中創建幾何體的方法比較簡單&#xff0c;通常有 3 種處理幾何體的手段&#xff1a; 使用松散封裝的OpenGL 繪圖基元&#xff1b;使用 OSG 中的基本幾何體&#xff1b;從文件中導入場景模型。 使用松散封裝的OpenGL 繪圖基元繪制幾何體具有很強的靈活…

牛氣霸屏-快抖云推獨立版V1.6.7

介紹 快抖云推全插件獨立版是最近很火的牛氣霸屏系統獨立版&#xff0c;牛氣霸屏系統就是商家通過系統在線創建抖音或快手霸屏活動&#xff0c;并生成該活動的爆客二維碼&#xff0c;用戶通過掃二維碼即可參加活動&#xff08;活動可以是領取卡劵&#xff0c;抽獎等&#xff0…

DevExpress中文教程 - 如何在macOS和Linux (CTP)上創建、修改報表(下)

DevExpress Reporting是.NET Framework下功能完善的報表平臺&#xff0c;它附帶了易于使用的Visual Studio報表設計器和豐富的報表控件集&#xff0c;包括數據透視表、圖表&#xff0c;因此您可以構建無與倫比、信息清晰的報表。 DevExpress Reports — 跨平臺報表組件&#x…

linux(1)之build構建系統基礎(一)

Linux(1)之buildroot構建系統(一) Author&#xff1a;Onceday Date&#xff1a;2023年11月12日 漫漫長路&#xff0c;才剛剛開始… 參考文檔&#xff1a; The Yocto ProjectBuildroot - Making Embedded Linux Easy 文章目錄 Linux(1)之buildroot構建系統(一)1. 概述1.1 如…