开云集团-将在线文档编辑器集成到 Python Web 应用法式中
作者:开云集团 发布时间:2023-03-31 01:59
本文摘要:通过 API,开发人员可以将 ONLYOFFICE 编辑器集成到网站和使用法式设计语言编写的应用法式中,并能设置和治理编辑器。• 泉源:linux.cn • 作者:Aashima Sharma • 译者:Hacker •(本文字数:9635,阅读时长约莫:12 分钟)ONLYOFFICE 是凭据 GNU AGPL v.3 许可证条款分发的开源协作办公套件。

开云集团

通过 API,开发人员可以将 ONLYOFFICE 编辑器集成到网站和使用法式设计语言编写的应用法式中,并能设置和治理编辑器。• 泉源:linux.cn • 作者:Aashima Sharma • 译者:Hacker •(本文字数:9635,阅读时长约莫:12 分钟)ONLYOFFICE 是凭据 GNU AGPL v.3 许可证条款分发的开源协作办公套件。它包罗三个用于文本文档、电子表格和演示文稿的编辑器,并具有以下功效:检察,编辑和协同编辑 .docx、.xlsx、.pptx 文件。

OOXML 作为一种焦点花样,可确保与 Microsoft Word、Excel 和 PowerPoint 文件的高度兼容性。通过内部转换为 OOXML,编辑其他盛行花样(.odt、.rtf、.txt、.html、.ods、.csv、.odp)。熟悉的选项卡式界面。协作工具:两种协同编辑模式(快速和严谨),跟踪更改,评论和集成谈天。

灵活的会见权限治理:完全会见权限、只读、审阅、表单填写和评论。使用 API 构建附加组件。

250 种可用语言和象形字母表。通过 API,开发人员可以将 ONLYOFFICE 编辑器集成到网站和使用法式设计语言编写的应用法式中,并能设置和治理编辑器。要集成 ONLYOFFICE 编辑器,我们需要一个集成应用法式来毗连编辑器(ONLYOFFICE 文档服务器)和服务。要在你的界面中使用编辑器,因该授予 ONLYOFFICE 以下权限:添加并执行自界说代码。

用于下载和生存文件的匿名会见权限。这意味着编辑器仅与服务器端的服务通信,而不包罗客户端的任何用户授权数据(浏览器 cookies)。在用户界面添加新按钮(例如,“在 ONLYOFFICE 中打开”、“在 ONLYOFFICE 中编辑”)。开启一个新页面,ONLYOFFICE 可以在其中执行剧本以添加编辑器。

能够指定文档服务器毗连设置。盛行的协作解决方案的乐成集成案例有许多,如 Nextcloud、ownCloud、Alfresco、Confluence 和 SharePoint,都是通过 ONLYOFFICE 提供的官方即用型毗连器实现的。

实际的集成案例之一是 ONLYOFFICE 编辑器与以 C# 编写的开源协作平台的集成。该平台具有文档和项目治理、CRM、电子邮件聚合器、日历、用户数据库、博客、论坛、观察、Wiki 和即时通讯法式的功效。将在线编辑器与 CRM 和项目模块集成,你可以:文档关联到 CRM 时机和容器、项目任务和讨论,甚至建立一个单独的文件夹,其中包罗与项目相关的文档、电子表格和演示文稿。直接在 CRM 或项目模块中建立新的文档、事情表和演示文稿。

打开和编辑关联的文档,或者下载和删除。将联系人从 CSV 文件批量导入到 CRM 中,并将客户数据库导出为 CSV 文件。

在“邮件”模块中,你可以关联存储在“文档模块”中的文件,或者将指向所需文档的链接插入到邮件正文中。当 ONLYOFFICE 用户收到带有附件的文档的消息时,他们可以:下载附件、在浏览器中检察文件、打开文件举行编辑或将其生存到“文档模块”。如上所述,如果花样差别于 OOXML ,则文件将自动转换为 .docx、.xlsx、.pptx,而且其副本也将以原始花样生存。在本文中,你将看到 ONLYOFFICE 与最盛行的编程语言之一的 Python 编写的文档治理系统的集成历程。

以下步骤将向你展示如何建立所有须要的部门,以使在 DMS( 文档治理系统(Document Management System))界面内的文档中可以举行协同事情成为可能:检察、编辑、协同编辑、生存文件和用户会见治理,并可以作为服务的示例集成到 Python 应用法式中。1、前置需求首先,建立集成历程的关键组件: ONLYOFFICE 文档服务器 和用 Python 编写的文件治理系统。

1.1、ONLYOFFICE 文档服务器要安装 ONLYOFFICE 文档服务器,你可以从多个安装选项中举行选择:编译 GitHub 上可用的源代码,使用 .deb 或 .rpm 软件包亦或 Docker 镜像。我们推荐使用下面这条下令使用 Docker 映像安装文档服务器和所有必须的依赖。

请注意,选择此方法,你需要安装最新的 Docker 版本。docker run -itd -p 80:80 onlyoffice/documentserver-de1.2、使用 Python 开发 DMS如果已经拥有一个,请检查它是否满足以下条件:包罗需要打开以检察/编辑的保留文件允许下载文件对于该应用法式,我们将使用 Bottle 框架。我们将使用以下下令将其安装在事情目录中:pip install bottle然后我们建立应用法式代码 main.py 和模板 index.tpl。我们将以下代码添加到 main.py 文件中:from bottle import route, run, template, get, static_file # connecting the framework and the necessary components@route('/') # setting up routing for requests for /def index():return template('index.tpl') # showing template in response to requestrun(host="localhost", port=8080) # running the application on port 8080一旦我们运行该应用法式,点击 http://localhost:8080 就会在浏览器上出现一个空缺页面。

为了使文档服务器能够建立新文档,添加默认文件并在模板中生成其名称列表,我们应该建立一个文件夹 files 并将3种类型文件(.docx、.xlsx 和 .pptx)放入其中。要读取这些文件的名称,我们使用 listdir 组件(模块):from os import listdir现在让我们为文件夹中的所有文件名建立一个变量:sample_files = [f for f in listdir('files')]要在模板中使用此变量,我们需要通过 template 方法通报它:def index():return template('index.tpl', sample_files=sample_files)这是模板中的这个变量:% for file in sample_files:<div><span>{{file}}</span></div>% end我们重新启动应用法式以检察页面上的文件名列表。使这些文件可用于所有应用法式用户的方法如下:@get("/files/<filepath:re:.*.*>")def show_sample_files(filepath):return static_file(filepath, root="files")2、检察文档所有组件准备停当后,让我们添加函数以使编辑者可以使用应用接口操作。第一个选项使用户可以打开和检察文档。

开云集团官网

毗连模板中的文档编辑器 API :<script type="text/javascript" src="editor_url/web-apps/apps/api/documents/api.js"></script>editor_url 是文档编辑器的链接接口。打开每个文件以供检察的按钮:<button onclick="view('files/{{file}}')">view</button>现在我们需要添加带有 id 的 div 标签,打开文档编辑器:<div id="editor"></div>要打开编辑器,必须挪用挪用一个函数:<script>function view(filename) {if (/docx$/.exec(filename)) {filetype = "text"}if (/xlsx$/.exec(filename)) {filetype = "spreadsheet"}if (/pptx$/.exec(filename)) {filetype = "presentation",title: filename}new DocsAPI.DocEditor("editor",{documentType: filetype,document: {url: "host_url" + '/' + filename,title: filename},editorConfig: {mode: 'view'}});}</script>DocEditor 函数有两个参数:将在其中打开编辑器的元素 id 和带有编辑器设置的 JSON。在此示例中,使用了以下必须参数:documentType 由其花样标识(.docx、.xlsx、.pptx 用于相应的文本、电子表格和演示文稿)document.url 是你要打开的文件链接。

editorConfig.mode。我们还可以添加将在编辑器中显示的 title。接下来,我们可以在 Python 应用法式中检察文档。

3、编辑文档首先,添加 “Edit”(编辑)按钮:<button onclick="edit('files/{{file}}')">edit</button>然后建立一个新功效,打开文件举行编辑。类似于检察功效。现在建立 3 个函数:<script>var editor;function view(filename) {if (editor) {editor.destroyEditor()}editor = new DocsAPI.DocEditor("editor",{documentType: get_file_type(filename),document: {url: "host_url" + '/' + filename,title: filename},editorConfig: {mode: 'view'}});}function edit(filename) {if (editor) {editor.destroyEditor()}editor = new DocsAPI.DocEditor("editor",{documentType: get_file_type(filename),document: {url: "host_url" + '/' + filename,title: filename}});}function get_file_type(filename) {if (/docx$/.exec(filename)) {return "text"}if (/xlsx$/.exec(filename)) {return "spreadsheet"}if (/pptx$/.exec(filename)) {return "presentation"}}</script>destroyEditor 被挪用以关闭一个打开的编辑器。你可能会注意到,edit() 函数中缺少 editorConfig 参数,因为默认情况下它的值是:{"mode":"edit"}。

现在,我们拥有了打开文档以在 Python 应用法式中举行协同编辑的所有功效。4、如何在 Python 应用中使用 ONLYOFFICE 协同编辑文档通过在编辑器中设置对同一文档使用相同的 document.key 来实现协同编辑。如果没有此键值,则每次打开文件时,编辑器都市建立编辑会话。

为每个文档设置唯一键,以使用户毗连到同一编辑会话时举行协同编辑。密钥花样应为以下花样:filename +"_key"。

下一步是将其添加到当前文档的所有设置中。document: {url: "host_url" + '/' + filepath,title: filename,key: filename + '_key'},5、如何在 Python 应用中使用 ONLYOFFICE 生存文档每次我们更改并生存文件时,ONLYOFFICE 都市存储其所有版本。让我们仔细看看它是如何事情的。

关闭编辑器后,文档服务器将构建要生存的文件版本并将请求发送到 callbackUrl 地址。该请求包罗 document.key和指向刚刚构建的文件的链接。document.key 用于查找文件的旧版本并将其替换为新版本。

由于这里没有任何数据库,因此仅使用 callbackUrl 发送文件名。在 editorConfig.callbackUrl 的设置中指定 callbackUrl 参数并将其添加到 edit() 方法中: function edit(filename) {const filepath = 'files/' + filename;if (editor) {editor.destroyEditor()}editor = new DocsAPI.DocEditor("editor",{documentType: get_file_type(filepath),document: {url: "host_url" + '/' + filepath,title: filename, key: filename + '_key'},editorConfig: {mode: 'edit',callbackUrl: "host_url" + '/callback' + '&filename=' + filename// add file name as a request parameter}});}编写一种方法,在获取到 POST 请求发送到 /callback 地址后将生存文件:@post("/callback") # processing post requests for /callbackdef callback():if request.json['status'] == 2:file = requests.get(request.json['url']).contentwith open('files/' + request.query['filename'], 'wb') as f:f.write(file)return "{"error":0}"​# status 2 是已生成的文件,当我们关闭编辑器时,新版本的文件将生存到存储器中。6、治理用户如果应用中有用户,而且你需要检察谁在编辑文档,请在编辑器的设置中输入其标识符(id和name)。在界面中添加选择用户的功效:<select id="user_selector" onchange="pick_user()"><option value="1" selected="selected">JD</option><option value="2">Turk</option><option value="3">Elliot</option><option value="4">Carla</option></select>如果在标志 <script> 的开头添加对函数 pick_user() 的挪用,卖力初始化函数自身 id 和 name 变量。

function pick_user() {const user_selector = document.getElementById("user_selector");this.current_user_name = user_selector.options[user_selector.selectedIndex].text;this.current_user_id = user_selector.options[user_selector.selectedIndex].value;}使用 editorConfig.user.id 和 editorConfig.user.name 来设置用户设置。将这些参数添加到文件编辑函数中的编辑器设置中。function edit(filename) {const filepath = 'files/' + filename;if (editor) {editor.destroyEditor()}editor = new DocsAPI.DocEditor("editor",{documentType: get_file_type(filepath),document: {url: "host_url" + '/' + filepath,title: filename},editorConfig: {mode: 'edit',callbackUrl: "host_url" + '/callback' + '?filename=' + filename,user: {id: this.current_user_id,name: this.current_user_name}}});}使用这种方法,你可以将 ONLYOFFICE 编辑器集成到用 Python 编写的应用法式中,并获得用于在文档上举行协同事情的所有须要工具。

有关更多集成示例(Java、Node.js、PHP、Ruby),请参考官方的 API 文档。via: opensourceforu.com作者: Aashima Sharma 选题: lujun9972 译者: stevenzdg988 校对: wxy本文由 LCTT 原创编译, Linux中国 荣誉推出点击“相识更多”可会见文内链接。


本文关键词:开云集团官网,开云,集团,将,在线,文档,编辑器,集成,到,Python

本文来源:开云集团-www.azarova-evgeniya.com

电话
0386-82097613