当前位置: 首页 > 科技观察

如何使用ONLYOFFICE将在线文档编辑器集成到Python网络应用程序中?

时间:2023-03-15 01:17:02 科技观察

ONLYOFFICE是根据GNUAGPLv.3许可条款分发的开源协作办公套件。它包括三个用于文本文档、电子表格和演示文稿的编辑器,以及功能:查看、编辑和共同编辑.docx、.xlsx、.pptx文件。OOXML作为核心格式确保与MicrosoftWord、Excel和PowerPoint文件的高度兼容性。通过内部转换为OOXML编辑其他流行格式(.odt、.rtf、.txt、.html、.ods、.csv、.odp)。熟悉的选项卡式界面。协作工具:两种协作编辑模式(快速和严谨)、跟踪更改、评论和集成聊天。灵活的访问权限管理:完全访问、只读、审查、表单填写和评论。使用API构建附加组件。250种可用语言和象形字母表。通过API,开发人员可以将ONLYOFFICE编辑器集成到以编程语言编写的网站和应用程序中,并对编辑器进行配置和管理。要集成ONLYOFFICE编辑器,我们需要一个集成应用程序来连接编辑器(ONLYOFFICE文档服务器)和服务。要在您的界面中使用编辑器,您应该授予ONLYOFFICE以下权限:添加和执行自定义代码。下载和保存文件的匿名访问。这意味着编辑器仅与服务器端服务通信,不包含客户端的任何用户授权数据(浏览器cookie)。在UI中添加新按钮(例如“在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(文档管理系统)界面内实现文档协作:查看、编辑、共同编辑、保存文件和用户访问管理,并且可以集成到一个作为服务示例的Python应用程序。1.前置需求首先,创建集成过程的关键组件:用Python编写的ONLYOFFICE文档服务器和文档管理系统。1.1.ONLYOFFICE文档服务器要安装ONLYOFFICE文档服务器,您可以从多个安装选项中进行选择:编译GitHub上可用的源代码,使用.deb或.rpm包或Docker映像。我们建议使用以下命令从Docker映像安装文档服务器和所有必需的依赖项。请注意,选择此方法需要您安装最新的Docker版本。dockerrun-itd-p80:80onlyoffice/documentserver-de1.2,使用Python开发DMS如果您已有,请检查是否满足以下条件:包含需要打开查看/编辑的保留文件允许下载此应用程序的文件,我们将使用Bottle框架。我们将使用以下命令将它安装在我们的工作目录中:pipinstallbottle然后我们创建应用程序代码main.py和模板index.tpl。我们将以下代码添加到main.py文件中:frombottleimportroute,run,template,get,static_file#连接框架和必要的组件@route('/')#为/defindex():returntemplate('index.tpl')#显示响应请求的模板run(host="localhost",port=8080)#在端口8080上运行应用程序运行应用程序后,点击http://localhost:8080将在浏览器上呈现一个空白页面。为了让文档服务器创建新文档、添加默认文件并在模板中生成它们的名称列表,我们应该创建一个文件夹files并将3种类型的文件(.docx、.xlsx和.pptx)放入其中。要读取这些文件的名称,我们使用listdir组件(模块):fromosimportlistdir现在让我们为文件夹中的所有文件名创建一个变量:sample_files=[fforfinlistdir('files')]touse模板中的这个变量,我们需要通过模板方法传递它:defindex():returntemplate('index.tpl',sample_files=sample_files)这是模板中的这个变量:%forfileinsample_files:

{{file}}
%end我们重新启动应用程序以查看页面上的文件名列表。使这些文件对所有应用程序用户可用的方法如下:@get("/files/")defshow_sample_files(filepath):returnstatic_file(filepath,root="files》)2.查看文档所有组件准备好后,我们来添加功能,让编辑们可以使用应用程序界面进行操作。第一个选项使用户能够打开和查看文档。连接模板中的文档编辑器API:editor_url为文档编辑器的链接接口.打开每个文件进行查看的按钮:view现在我们需要添加一个带有id的div标签来打开文档编辑器:
要打开编辑器,必须调用一个函数:DocEditorParameters有两个功能:将打开编辑器的元素id和带有编辑器设置的JSON。在此示例中,使用了以下必需参数:documentType由其格式标识(.docx、.xlsx、.pptx用于相应的文本、电子表格和演示文稿)。document.url是您要打开的文件链接。编辑器配置模式。我们还可以添加一个将显示在编辑器中的标题。接下来,我们可以查看Python应用程序中的文档。3.编辑文档首先,添加一个“编辑”按钮:edit然后创建一个新的函数来打开文件进行编辑。类似于视图功能。现在创建3个函数:destroyEditor被调用以关闭打开的编辑器您可能会注意到edit()函数中缺少editorConfig参数,因为默认情况下它的值为:{"mode":"edit"}。我们现在拥有在Python应用程序中打开文档以进行共同编辑的所有功能。4.如何使用ONLYOFFICE在Python应用程序中协同编辑文档。可以通过在编辑器中为同一个文档设置相同的document.key来实现协同编辑。如果没有这个键值,编辑器会在每次打开文件时创建一个编辑会话。为每个文档设置一个唯一的密钥,以便在用户连接到同一编辑会话时启用协作编辑。密钥格式应为以下格式:文件名+“_key”。下一步是将其添加到当前文档的所有配置中。document:{url:"host_url"+'/'+filepath,title:filename,key:filename+'_key'},5.如何使用ONLYOFFICE在Python应用程序中保存文档每次我们更改和保存文件时,ONLYOFFICE将存储其所有版本。让我们仔细看看它是如何工作的。关闭编辑器后,文档服务器构建要保存的文件版本,并将请求发送到callbackUrl地址。该请求包含document.key和指向刚刚构建的文件的链接。document.key用于查找文件的旧版本并将其替换为新版本。因为我这里没有任何数据库,所以我只使用callbackUrl来发送文件名。在editorConfig.callbackUrl的设置中指定callbackUrl参数,并将其添加到edit()方法中:functionedit(filename){constfilepath='files/'+filename;if(editor){editor.destroyEditor()}editor=newDocsAPI.DocEditor("editor",{documentType:get_file_type(filepath),document:{url:"host_url"+'/'+文件路径,title:文件名,key:filename+'_key'},editorConfig:{mode:'edit',callbackUrl:"host_url"+'/callback'+'&filename='+filename//添加文件名作为请求参数}});}写一个方法发送POST请求到/回调地址后会保存文件:@post("/callback")#processingpostrequestsfor/callbackdefcallback():ifrequest.json['status']==2:文件=requests.get(请求.json['url']).contentwithopen('files/'+request.query['filename'],'wb')asf:f.write(file)return"{\"error\":0}"#状态2是生成的文件。当我们关闭编辑器时,文件的新版本将被保存到存储中。6.管理用户如果应用中有用户,需要查看谁在编辑文档,请在编辑服务器的配置中输入其标识符(id和name)。在界面添加选择用户的功能:JDTurkElliotCarla如果在开头添加对函数pick_user()的引用标签的