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

news2024/11/26 12:21:41

在本文中,我们会向您展示 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工作区即刻开始免费试用

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java0基础学Java第八颗】 -- 继承与多态 -- 继承

8.继承与多态 8.1 继承8.1.1 为什么需要继承8.1.2 继承概念8.1.3 继承的语法8.1.4 super关键字8.1.5 父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法 8.1.6 子类构造方法8.1.7 super和this8.1.8 再谈初始化8.1.9 protected 关键字同一包中同一类同一包中不同的…

蓝桥杯每日一题2023.11.10

“蓝桥杯”练习系统 (lanqiao.cn) 题目描述 题目分析 对于此题&#xff1a;我们看到题目要求尽可能大&#xff0c;会联想到二分&#xff0c;注意切出的一定为正方形&#xff0c;其能切出的个数为(h[i] / x) * (w[i] / x)&#xff0c;将所有的个数与要求的个数进行对比&#x…

算术运算符、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符

1.算术运算符 public class OperatorDemo1 {public static void main(String[] args) {int a 10;int b 2;System.out.println(a b);System.out.println(a - b);System.out.println(a * b);System.out.println(a / b);System.out.println(5 / 2);System.out.println(5.0 / 2);…

相机标定:理论与实践

先讨论相机模型&#xff0c;说明投影关系的描述&#xff0c;介绍相机的内外参&#xff0c;最后完成标定。 一、内参含义 把需要标定的相机参数叫做内参&#xff08;intrinsics matrix&#xff09;&#xff0c;它决定了物体的实际位置Q在成像平面上的投影位置q&#xff0c;如下…

MySQL其他集群类型介绍

常用的/常见的Mysql集群方案 1.MySQL Replication2.MySQL Fabric3.MySQL NDB Cluster4.MGR&#xff08;MySQL Group Replication&#xff09;5.心跳检测SAN共享存储&#xff08;heartbeat SAN&#xff09;6.心跳检测DRBD磁盘复制&#xff08;heartbeat DRBD&#xff09;7.MMM…

IDEA 28 个天花板技巧 + 12 款神级插件,生产力起飞...

IDEA 作为Java开发工具的后起之秀&#xff0c;几乎以碾压之势把其他对手甩在了身后&#xff0c;主要原因还是归功于&#xff1a;好用&#xff1b;虽然有点重&#xff0c;但依旧瑕不掩瑜&#xff0c;内置了非常多的功能&#xff0c;大大提高了日常的开发效率&#xff0c;下面汇总…

鸿蒙原生应用开发-DevEco Studio远程模拟器的使用

使用单设备模拟器运行应用/服务 Remote Emulator支持Phone、Wearable、Tablet、TV等设备类型&#xff0c;但不同区域&#xff08;开发者帐号注册地&#xff09;支持的设备类型可能不同&#xff0c;请以实际可申请的设备类型为准。 Remote Emulator中的单设备模拟器&#xff08…

FL Studio21.2宿主软件中文免费版下载

纵观当下宿主软件市场&#xff0c;正值百家争鸣、百花齐放之际像Mac系统的Logic Pro X、传统宿主软件代表Cubase、录音师必备Pro Tools、后起之秀Studio One等&#xff0c;都在各自的领域具有极高的好评度。而在众多宿主软件中&#xff0c;有这么一款历久弥新且长盛不衰的独特宿…

Java类和对象(2)

&#x1f435;本文继续讲解类和对象相关知识 一、封装 封装就是将对象的属性和实现方法隐藏起来&#xff0c;外部无法获得具体的实现细节&#xff0c;只对外公开接口和对象进行交互&#xff0c;将对象的属性隐藏起来的办法就是用关键字private&#xff0c;被private修饰的成员…

安科瑞电力监控系统在浙中总部经济中心的设计与应用

安科瑞 崔丽洁 摘要&#xff1a;电力供应是整个社会生产、人民生活的基本保证之一&#xff0c;也是全世界普遍的能源形式&#xff0c;而且多数资源都被人类运用各种方式转换为电能而加以利用&#xff0c;经济的高速运行也使各领域的用电负荷急速上升&#xff0c;各种疏漏和故障…

刷题学习记录BUUCTF

[极客大挑战 2019]RCE ME1 进入环境直接就有代码 <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]/",$code)){die("NO.");}eval($co…

社区街道治安智慧监管方案,AI算法赋能城市基层精细化治理

一、背景需求分析 随着城市建设进程的加快&#xff0c;城市的管理也面临越来越多的挑战。例如&#xff0c;在城市街道的管理场景中&#xff0c;机动车与非机动车违停现象频发、摊贩占道经营影响交通、街道垃圾堆积影响市容市貌等等&#xff0c;都成为社区和街道的管理难点。这…

中波发射机概述

一、简介 1.1 中波发射机简介 中波发射机是一种用于广播电台传输中波频率信号的设备。它们是广播电台系统的重要组成部分&#xff0c;用于发送声音、音乐和其他信息到广泛的地理区域。中波频率范围一般介于530kHz至1700kHz之间&#xff0c;具有较好的传播性能&#xff0c;可以…

Sentinel网关限流

背景 在微服务架构下&#xff0c;每个服务的性能都不同&#xff0c;为避免出现流量洪峰将服务冲垮&#xff0c;需要依赖限流工具来保护服务的稳定性。sentinel是阿里提供的限流工具&#xff0c;社区活跃&#xff0c;功能也很全面&#xff0c;包含实时监控、流控、熔断等功能。…

数据结构-链表的简单操作代码实现【Java版】

目录 0.链表前序工作 1.构建出一个链表 2.展示链表中的所有存储数据 3.查找关键字key是否在链表中 4.求链表的长度 5.头插法 6.尾插法 7.插入任意位置&#xff08;规定第一个元素位置为0下标&#xff09; 8.删除第一次出现的值为key的关键字 9.删除所有值为key的关键字…

阿里巴巴将开源720亿参数大模型;开源语言大模型演进史

&#x1f989; AI新闻 &#x1f680; 阿里巴巴将开源720亿参数大模型 摘要&#xff1a;在2023世界互联网大会乌镇峰会上&#xff0c;阿里巴巴集团CEO吴泳铭透露&#xff0c;阿里巴巴即将开源720亿参数大模型&#xff0c;这将是国内参数规模最大的开源大模型。目前&#xff0c…

【启扬方案】启扬安卓屏一体机在医疗自助服务终端上的应用解决方案

为了解决传统医疗模式下的“看病难、看病慢”等问题&#xff0c;提高医疗品质、效率与效益&#xff0c;自助服务业务的推广成为智慧医疗领域实现信息化建设、高效运作的重要环节。 医疗自助服务终端是智慧医疗应用场景中最常见的智能设备之一&#xff0c;它通过与医院信息化系统…

计算机网络篇 | 走进计算机网络

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 计算机网络 ✨特色专栏&#xff1a; M…

TensorFlow2.0教程3-CNN

` 文章目录 基础CNN网络读取数据卷积层池化层全连接层模型配置模型训练CNN变体网络简单的深度网络添加了其它功能层的深度卷积NIN网络文本卷积基础CNN网络 读取数据 import numpy as np import tensorflow as tf import tensorflow.keras as keras import tensorflow.keras.la…

11月7日 mybatis缓存

mybatis的缓存 缓存的条件&#xff1a;必须要有存在的数据 一级缓存: SqlSession级别缓存.存储的数据.只能在同一个SalSession有效.默认开启 二级缓存: SqlSessionFactory级别的缓存. SqlSessionFactory只有一个的,单例,全局共享的,不同的 SqlSession共享&#xff0c;默认没有…