将 ONLYOFFICE 文档编辑器与 С# 群件平台集成

在本文中,我们会向您展示 ONLYOFFICE 文档编辑器与其自有的协作平台集成

ONLYOFFICE 是一款开源办公套件包括文本文档、电子表格和演示文稿编辑器这款套件支持用户通过文档编辑组件扩展第三方 web 应用的功能可直接应用的界面使用。在之前的几篇文章中,我们向您展示了如何实现这种集成请参考 Node.js  Python 示例)。

在本文中,我们向您展示一个真实的集成案例 ONLYOFFICE 文档编辑器与自协作平台集成

ONLYOFFICE Groups

ONLYOFFICE Groups社区服务器)是一个免费开源协作系统,使用 C# 编写根据 GNU GPL v3.0 分发包括文档和项目管理CRM电子邮件聚合器、日历、用户数据库、博客、论坛、投票、维基和即时通讯工具

ONLYOFFICE Groups 是完整的自托管解决方案的一部分支持用户在自己的服务器上部署功能齐备私人网络办公室。它免费的社区版和企业版企业版具备更多系统管理选项和增强的安全工具,适合更大团队使用

集成清单

如要将 ONLYOFFICE 文档编辑器与协作平台无缝集成所需的最重要权限清单如下

1添加定制代码

2匿名访问权限,用于下载和保存文件这意味着我们的编辑器仅在服务器端与协作平台通信,不涉及客户端的任何用户授权数据(浏览器 cookie

3添加界面按钮

4与协作平台模块(DMSCRM、项目、邮件)集成

5打开一个新页面用于执行脚本添加编辑器

6能够指定文档服务器连接设置

我们看看如何根据这份清单来实施集成

1添加代码

由于 ONLYOFFICE 编辑器是所有 ONLYOFFICE 解决方案的中心元在我们的协作系统中嵌入编辑功能在开始就是开工作的主要部分

此外,ONLYOFFICE 支持用户在社区服务器中添加自定义模块(如自己的 CRM 系统),为添加的模块创建 APIGitHub 有相关示例项目

2匿名访问

我们实施了一个回调处理程序,处理从 ONLYOFFICE 文档服务器到协作平台(即 DMS)的请求。它们之间直接交互不需要浏览器 cookie 等用户验证数据相反,它基于 JWT 技术,使用请求签名验证

文档服务器使用其配置文件中所谓的“密钥” JWT 添加到请求中。之后 DMS 会检查 JWT 密钥是否与其配置中的密钥一致。只有签名验证成功,回调处理程序才会执行请求的操作

如下 JWT 验证请求的处理过程

public class FileHandler : IHttpAsyncHandler
{
    public override void OnProcessRequest(HttpContext context)
    {
        using (var receiveStream = context.Request.InputStream)
        using (var readStream = new StreamReader(receiveStream))
        {
            //request body
            var body = readStream.ReadToEnd();

            //request data
            var data = JToken.Parse(body);
            var callbackData = data.ToObject<CallbackData>();

            //request token
            var jwtString = JsonWebToken.Decode(callbackData.Token, Config.JwtSecret);
            var jwtData = JObject.Parse(jwtString);
            if (jwtData == null)
            {
                throw new ArgumentException("Document Service request token is incorrect");
            }

            //request data from JWT
            callbackData = jwtData.ToObject<CallbackData>();
            result = ProcessData(callbackData);
            context.Response.Write(result ?? "{\"error\":0}");
        }
    }
    ...
}

响应应该是

{”error”:0}

根据请求的状态,特定的操作被执行

public string ProcessData(CallbackData callbackData)
{
    switch (callbackData.Status)
    {
        case NotFound:
        case Closed:
            FileTracker.Remove(callbackData.key);
            break;

        case Editing:
            ProcessEdit(callbackData);
            break;

        case MustSave:
        case Corrupted:
            return ProcessSave(callbackData);
    }
    return null;
}

3添加按钮

最重要的两个操作一定是打开查看和编辑相应是“预览”“编辑”按钮)。我们在界面中实施其他操作按钮则可支持用户执行以下操作

  • 移动
  • 复制
  • 下载可以选择所需的格式
  • 重命名
  • 删除
  • 查看文档的版本历史
  • 设置文件访问权限,包括共享设置为门户网站用户生成链接、阻止/解除阻止文档以及通过电子邮件发送文档。通过电子邮件发送文档是通过与邮件模块集成实现请参考下文)。

4与模块集成

除按钮外,还有一些操作需要文档服务器与其他服务或模块交互。例如,我们通过转换服务在文档管理的几个阶段转换文件,如用户上传、打开或下载文档时。但需要注意的是,因为 Office Open XML 是我们的核心格式,DOCXXLSX  PPTX 文件是会被直接处理,而其他文件格式都会被转换为 OOXML这样做是为了加速文件处理,提互操作性

用户不仅可以在文件管理系统中处理文档我们在之前一篇文章中有详细介绍),可以在 CRM、项目和邮件中进行

 CRM 模块中,用户可以:

  • 将文档附加到 CRM 和案
  • CRM 中直接创建新文档、工作表和演示文稿同样适用于商机和案例
  • 打开编辑或下载附件文档

用户可以从 CSV 文件将联系人批量导入 CRM,也可以将客户数据库导出为 CSV 文件

 “项目”模块中,我们为文档、电子表格和演示文稿建立了一个单独的文件夹(项目文档

用户可以将文档附到项目任务和讨论中可以直接在“项目”模块中创建新文件用户在管理附件文件时,可以对其进行编辑、下载或删除操作

“邮件”模块中,我们是这样实现集成的:除了将本地驱动器中的文档、电子表格和演示文稿附加到邮件之外,用户还可以存储在“文档”模块中的文件添加为附件如果文件大小限制,建议用户发送时使用所需文档链接

在这种情况下,文件链接会插入邮件正文在发送邮件之前,用户需要为所有链接指向的附件文件设置访问权限之后收件人点击邮件中的链接时基于指定的访问权限在线查看器或编辑器中打开文档

ONLYOFFICE 用户收到有文档附件的邮件时,可以

  • 下载附件
  • 在浏览器中查看文件
  • 打开文档、电子表格或演示文稿进行编辑(在这种情况下,如果格式不是 OOXML系统会自动将其转换为 .docx/.xlsx/.pptx 格式,并将其保存到“文档”中)
  • 将文件保存到“文档”,会选择所需的文件

用户可通过“邮件”设置“文档”模块选择任意文件夹电子邮件信息中的所有件都会被自动保存在这个文件夹中

此外,在“CRM”“项目”模块中,我们可以通过 ONLYOFFICE 文档生成工具文档生成器生成报告通过这款工具您无需实际运行文档处理编辑器即可生成文档。它还支持开发人员使用模板自动生成文档,或将数据库中的数据插入文档

5用编辑器打开页面

使用编辑器打开新页面时,会生成初始化配置发送至编辑器的主要参数包括定义文件类型的参数、界面语言 (editorConfig.lang = "en-US")以及每个用户的权限列表,也就是说,我们会检查用户是否拥有相应的权限:包括打开和编辑文执行其他操作表评下载、重命名文件等):

var config = {
   "document":{
      "fileType":"docx",
      "info":{
         "author":"Me",
         "created":"3\/29\/2019 10:06 PM",
         "folder":"My Documents",
         "sharingSettings":[
            {
               "permissions":"Full Access",
               "user":"Me"
            }
         ]
      },
      "key":"kouNPg1",
      "permissions":{
         "changeHistory":true,
         "comment":true,
         "download":true,
         "edit":true,
         "fillForms":true,
         "print":true,
         "rename":true,
         "review":true
      },
      "title":"ONLYOFFICE Sample Document.docx",
      "url":"https:\/\/demo.onlyoffice.com\/demo.docx"
   },
   "documentType":"text",
   "editorConfig":{
      "callbackUrl":"https:\/\/demo.onlyoffice.com\/filehandler.ashx",
      "lang":"en-US",
      "mode":"edit",
      "user":{
         "id":"9acf7169b737",
         "name":"John Smith"
      }
   },
   "type":"desktop"
}

6连接设置

用户可以基于解决方案指定或不指定文档服务器连接设置

在我们自己托管的 ONLYOFFICE 云服务中,连接设置对用户隐藏,由我们在服务器配置中进行设置

ONLYOFFICE 服务器解决方案的用户可以指定安装 ONLYOFFICE 编辑器的服务器地址。门户管理员可在“设置”页面的“集成”板块进行相关设置

ONLYOFFICE 文档和社区服务器通常会安装在同一台机器上。在这种情况下,您的网络配置可能不允许它们之间使用公共地址收发请求。因此,需要另外两个字段(如上方截图所示)来指定 ONLYOFFICE 文档服务器地址,以便从社区服务器发出和接收内部请

管理员保存设置时,门户和编辑器之间的交互检查,以确保连接正确

如要详细了解 ONLYOFFICE 文档编辑器如何与其他服务集成,请参阅 API 文档

如果您想尝试将 ONLYOFFICE 文档编辑器与协作平台结合使用,并查看其集成情况,您可以在私人服务器上部署 ONLYOFFICE工作区即刻开始免费试用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/128560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware ifconfig ip报错解决记录

1.报错 ifconfig后出现以下报错 lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 9216 b…

Element-Ui入门教学——<el-upload>限制上传文件类型

要限制<el-upload>上传文件的类型&#xff0c;需要给组件绑定:before-upload属性。 before-upload可选参数, 上传文件之前的钩子&#xff0c;参数为上传的文件&#xff0c;若返回 false 或者 Promise 则停止上传。HTML代码 <template><el-uploadclass"uplo…

竞赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

Simulia仿真之CST的使用指南(1) | 百世慧®

前言 CST是Computer Simulation Technology的缩写,是全球范围内众多工程师都喜欢使用的高端电磁仿真分析软件。 本文又名《智慧的CST生活》这里一共列出了120个章节&#xff0c;其中包括CST使用过程中的有用小技巧&#xff0c;还有给用户提供技术支持的过程中常见的问题。本专…

Linux服务器上搭建JupyterNotebook教程

搭建需知 1.确保是Linux服务器&#xff1b; 2.已经在linux服务器上安装好anaconda3&#xff1b; 搭建教程 请按照顺序依次执行下面的命令&#xff1a; 1、安装Jupyter Notebook 执行以下命令&#xff0c;安装jupyter notebook conda install jupyter【注】 如果anaconda3…

maven-compiler-plugin和spring-boot-maven-plugin的区别

两者都能打包&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 格式不同&#xff01;&#xff01;&#xff01;用处不同&#xff01;&#xff01;&#xff01; 以实验为准&#xff0c;下面开始实验&#xff1a; maven-compiler-plugin &…

双11狂欢最后一天

大家好&#xff0c;本年度双11即将到来&#xff0c;为了答谢大家多年来的支持及更广泛的推广VBA的应用&#xff0c;“VBA语言専功”在此期间推出巨大优惠&#xff1a;此期间打包购买VBA技术资料实行半价优惠。 1&#xff1a;面向对象&#xff1a;学员及非学员 2&#xff1a;打…

Android发热监控实践

一、背景 相信移动端高度普及的现在&#xff0c;大家或多或少都会存在电量焦虑&#xff0c;拥有过手机发热发烫的糟糕体验。而发热问题是一个长时间、多场景的指标存在&#xff0c;且涉及到端侧应用层、手机 ROM 厂商系统、外界环境等多方面的影响。如何有效衡量发热场景、定位…

NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

C#动态拦截并覆盖第三方进程的函数,实现函数篡改(外挂)

今天在看之前收藏的一个pdf文档(介绍C#外挂的相关知识的)&#xff0c;结合网上的东西及个人的理解才有了这篇文章。 参考文章&#xff1a; 【精选】一文带解读C# 动态拦截覆盖第三方进程中的函数&#xff08;外挂必备&#xff09;_zls365365的博客-CSDN博客 DotNetDetour - …

UE5数字孪生制作-数据篇(二) - 数据处理

1.卫星图与DEM高度图坐标一致处理 https://www.bilibili.com/video/BV1op4y1V71r?p4&vd_source707ec8983cc32e6e065d5496a7f79ee6 坐标系的调整 先把工程默认坐标调整下&#xff0c;建议调整到3857&#xff0c;在菜单的设置&#xff08;s&#xff09;里找到&#xff0c;修…

java excel、word、PPT转换成pdf预览

先引入包&#xff1a;[lib下载地址](https://mp.csdn.net/mp_download/manage/download/UpDetailed)Controllerpublic AjaxResult fileToPdf(RequestBody VerifyCode url, HttpServletResponse response, HttpServletRequest request) throws IOException {String fileUrl req…

Jupyter Notebook 内核似乎挂掉了,它很快将自动重启

报错原因&#xff1a; OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade perfo…

户外台灯设计:照亮你的户外空间

在一个温暖的夏夜&#xff0c;能够在户外享受美味的晚餐是一种特殊的愉悦。这种露天用餐的体验不仅让你感受大自然的美丽&#xff0c;还提供了独特的放松感。为了让这个时刻更加难忘&#xff0c;户外台灯的用途与设计至关重要。 户外台灯能够创造出温馨的氛围&#xff0c;为用餐…

第六章 :Spring Boot web开发常用注解(一)

第六章 &#xff1a;Spring Boot web开发常用注解&#xff08;一&#xff09; 前言 本章节知识重点&#xff1a;作者结合自身开发经验&#xff0c;以及觉察到的一个现象&#xff1a;Springboot注解全面理解和掌握的并不多&#xff0c;对注解进行了全面总结&#xff0c;共分两个…

(三)、MySQL索引

一、索引基础 索引是存储引擎用于快速找到记录的一种数据结构。(可以理解为一本书的目录)。 例子&#xff1a;where id1 如果在id列上建有索引&#xff0c;则MySQL将使用该索引找到id为1的行&#xff0c;也就是说&#xff0c;MySQL先在索引上按值进行查找&#xff0c;然…

kernel32.dll是什么 ,分享一些解决kernel32.dll丢失的修复方法

kernel32.dll丢失&#xff1f;电脑突然出现这样的弹窗错误是为什么&#xff1f;那么kernel32.dll是什么的东西呢&#xff1f;今天就带大家了解小编对于kernel32.dll的理解和作用&#xff0c;同时在给小伙伴们分享一些解决kernel32.dll丢失的修复方法。 一.对Kernel32.dll的理解…

【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询

系列文章目录 文章目录 系列文章目录系统版本实现功能操作步骤1. 新建Mybatis的全局分页配置文件2. 编写OrderMapper :继承Mybatis-plus提供的BaseMapper3. 编写OrderServiceImpl&#xff0c;实现OrderService4. 编写OrdersController 控制类 发送接口请求测试 系统版本 后端&…

《未来之路:技术探索与梦想的追逐》

创作纪念日 日期&#xff1a;2023年07月05日文章标题&#xff1a;《从零开始-与大语言模型对话学技术-gradio篇&#xff08;1&#xff09;》成为创作者第128天 在这个平凡的一天&#xff0c;我撰写了自己的第一篇技术博客&#xff0c;题为《从零开始-与大语言模型对话学技术-…

JTS: 18 DistanceToPoint 最近距离计算

这里写目录标题 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 import org.locationtech.jts.algorithm.distance.DistanceToPoint; import org.locationtech.jts.algorithm.distance.PointPairDistance; import org.locationtech.jts.geom.Coordin…