如何在ONLYOFFICE文档中,将新插件添加为选项卡

news2024/9/20 1:17:38

随着 ONLYOFFICE 文档8.1版本的推出,我们引入了各式各样的功能,旨在增强软件功能性和优化用户体验。其中一项改进是,插件可以显示在一个独立的选项卡中了。在本博客文章中,我们将带您了解充分利用这一新功能的各项步骤。

如何在ONLYOFFICE文档中将新插件添加为选项卡

关于 ONLYOFFICE

ONLYOFFICE 是一个国际开源项目,由领先的 IT 公司 Ascensio System SIA 开发。我们在新加坡、拉脱维亚、英国、塞尔维亚、亚美尼亚和乌兹别克斯坦设有分公司,员工和贡献者遍布全球 30 多个国家。我们的中国客户包括:南京大学、知网、百威中国、中信集团等。观看下方视频,进一步了解我们:

ONLYOFFICE,兼顾协作与安全的开源办公套件

ONLYOFFICE 提供文档编辑器:支持编辑处理文本文档、电子表格、演示文稿、表单、PDF和电子书。还提供文件储存及协作平台、文档生成器、转换器等其他工具。

目前 ONLYOFFICE 有许多广受欢迎插件,例如 ChatGPT、智谱 AI、二维码生成器、Zotero、draw.io、Pixabay、Markdown 转换器等,也邀请大家开发适合中国用户的插件! 

登记参与下届插件开发比赛

这项功能可以做什么

该功能支持您为某个插件在工具栏上创建专用选项卡。

如何在ONLYOFFICE文档中将新插件添加为选项卡

创建的选项卡可以包含插件提供的额外功能,让您使用起来更方便。

如何在ONLYOFFICE文档中将新插件添加为选项卡

如何实现

若要启用插件中的此功能,您需要更改两个文件:

config.json:在 config.json 文件中,您需要将 events 参数添加到您的插件配置中,以便订阅 onToolbarMenuClick 事件。

  "events"              : ["onToolbarMenuClick"]

code.js:在 code.js 文件中,您需要使用 AddToolbarMenuItem 方法,该方法可启用单独选项卡创建并显示选项卡中的项目。

this.executeMethod("AddToolbarMenuItem", [getToolbarItems()]);

操作示例

让我们再看看具体操作。出于演示目的,我们将创建一个新插件,该插件支持在文本文档中插入若干对象,而其插入选项将通过工具栏菜单进行管理。您可以在此Github仓库中找到该插件案例。

修改config.json文件

若要将创建选项卡绑定到事件,我们需要将 onToolbarMenuClick 添加到 events 参数中。

完 整config.json 文件如下:

{
    "name"       : "Plugin as tab",
    "guid"       : "asc.{0616AE85-5DBE-4B6B-A0A9-455C4F1503AD}",
    "baseUrl"    : "",
    "variations" : [
        {
            "description"         : "Example of displaying a plugin in a separate tab",
            "url"                 : "index.html",
            "icons"               : ["resources/img/icon.png", "resources/img/icon@2x.png"],
            "isViewer"            : false,
            "EditorsSupport"      : ["word"],
            "isVisual"            : false,
            "isModal"             : false,
            "isInsideMode"        : false,
            "initDataType"        : "none",
            "initData"            : "",
            "isUpdateOleOnResize" : true,
            "buttons"             : [],
            "events"              : ["onToolbarMenuClick"]
        }
    ],
    "store": {
                "background": {
                    "light": "radial-gradient(circle, #B5BCC3 0%, #737D87 100%)",
                    "dark": "radial-gradient(circle, #B5BCC3 0%, #737D87 100%)"
                },
                "icons": {
                    "light": "resources/store/icons",
                    "dark": "resources/store/icons"
                },
                "categories": ["specAbilities", "work"]
            }
}

修改code.js文件

初始化插件并添加工具栏项目

为初始化插件,我们使用了 window.Asc.plugin.init 方法。该方法是插件的入口点,并在插件加载时自动调用。

 window.Asc.plugin.init = function () {
      this.executeMethod("AddToolbarMenuItem", [getToolbarItems()]);// the rest of the plugin code
  }

executeMethod(“AddToolbarMenuItem”)这个方法可将自定义选项卡及其项目添加至工具栏,接受由 getToolbarItems函数返回的配置:

  function getToolbarItems() {
        console.log()
        let items = {
          guid: window.Asc.plugin.info.guid,
          tabs: [{
            id: "tab_1",
            text: "Insert options",
            items: [
              {
                id: "insertText",
                type: "button",
                text: "Insert text",
                hint: "insert text into the document",
                icons: "resources/buttons/icon_txt.png", 
                lockInViewMode: true,
                enableToggle: false,
                separator: false
              },
              {
                id: "insertOleObject",
                type: "button",
                text: "Insert OLE Object",
                hint: "Insert an OLE object into the document",
                icons: "resources/buttons/icon_ole.png", 
                lockInViewMode: true,
                enableToggle: false,
                separator: false
              },
              {
                id: "insertImage",
                type: "button",
                text: "Insert image",
                hint: "Insert an image into the document",
                icons: "resources/buttons/icon_img.png", 
                lockInViewMode: true,
                enableToggle: false,
                separator: false
              }
            ]
          }]
        };
  
        return items;
      }
    };

该函数会返回一个定义选项卡及其按钮的配置对象:

  • guid: 插件的唯一标识符。
  • tabs: 选项卡对象的数组,每个对象包含一个ID、文本标签和项目数组。
  • items: 按钮配置的数组,每个按钮具有ID、类型、文本、提示、图标等属性。
设置工具栏项目的点击事件

自定义选项卡中的每个按钮在点击时都会触发一个事件。我们需要设置这些事件,使其执行相应操作。可以使用attachToolbarMenuClickEvent 方法来实现。

点击插入文本( Insert text )按钮时,我们需要执行一个命令来插入一个带有格式化文本的新段落:

 this.attachToolbarMenuClickEvent("insertText", function (data) {
        this.callCommand(function () {
          var oDocument = Api.GetDocument();
  
          // Create a new paragraph
          var oParagraph = Api.CreateParagraph();
  
          // Add text to the paragraph
          oParagraph.AddText("ONLYOFFICE Docs 8.1");
  
          // Style the text as a title
          oParagraph.SetBold(true);              // Make the text bold
          oParagraph.SetFontSize(24);            // Increase the font size
          oParagraph.SetJc("center");         // Align text to the center
  
          // Insert the paragraph at the beginning of the document
          oDocument.InsertContent([oParagraph],0);
        });
      });

点击插入OLE对象按钮时,一个OLE对象(例如YouTube视频)将插入到文档中:

  this.attachToolbarMenuClickEvent("insertOleObject", function (data) {
        this.callCommand(function () {
          var oDocument = Api.GetDocument();
          var oOleObject = Api.CreateOleObject("data:image/jpeg;base64,<Base64ImageCode>", 130 * 36000, 90 * 36000, "https://www.youtube.com/watch?v=oYlRfQ2zhaQ", "asc.{38E022EA-AD92-45FC-B22B-49DF39746DB4}");
          var oParagraph = oDocument.GetElement(0);
          oParagraph.AddDrawing(oOleObject);
          oParagraph.SetJc("center");
        });
  
      });

插入图像( Insert image)按钮支持用户插入图像:

this.attachToolbarMenuClickEvent("insertImage", function (data) {
        this.callCommand(function () {
  
          var oDocument = Api.GetDocument();
          var oParagraph = oDocument.GetElement(0);
          var oDrawing = Api.CreateImage("data:image/jpeg;base64,<Base64ImageCode>", 150 * 36000, 90 * 36000);
          oParagraph.SetJc("center");
          oParagraph.AddDrawing(oDrawing);
  
        });
      });

我们希望本文能够在您将新功能集成至插件时有所帮助。在 ONLYOFFICE,我们通过引入功能和做出改进不断提升用户体验,并会为此不懈努力。

我们积极鼓励开发者推出创新插件,充分利用这些新功能。我们对合作与讨论的开放态度始终如一,请放心与我们分享您的插件。让我们一起,让 ONLYOFFICE 变得更加强大。祝您的探索之旅一切顺利!

相关链接

关于 ONLYOFFICE 文档8.1

开始使用 ONLYOFFICE 插件

ONLYOFFICE 的 Github 页面

添加插件为选项卡-示例

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

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

相关文章

图像修复(Inpainting)技术的前沿模型与数据集资源汇总

图像修复&#xff08;Image Inpainting&#xff09;是一种计算机视觉技术&#xff0c;旨在填补图像中的缺失区域或去除图像中的不需要部分&#xff0c;使其看起来自然且无明显痕迹。其目标是根据图像的上下文信息和周围像素来推断和重建缺失区域的内容&#xff0c;以生成逼真且…

实战17-NavBar+Vip布局

NavBar.ets import { PADDING } from ../../constants/size import rvp from ../../utils/resposive/rvIndexComponent export default struct NavBar {StorageProp(topHeight) topHeight: number 0;build() {Row() {Row({ space: rvp(6) }) {Text(请选择地址).fontSize(rvp(1…

Java基础笔记1】Java基础语法

目录 一、Java简介 二、JDK和Java初体验 三、配置环境变量 四、IDEA快捷键 五、Java语法基础 1. 注释 2. 字面量 3. 变量 4. 关键字和标识符 5. 变量详解 a. 数值数据在计算机中的存储​编辑 b. 文本、图片、音频等数据在计算机中的存储 c. 八进制和十六进制 6. 数据类型 a. …

【LabVIEW】事件结构的用法

本篇文章记录我学习LabVIEW的事件结构用法&#xff0c;希望我的分享对你有所帮助&#xff01; 目录 一、案例说明 1、 LabVIEW实现“YAXBXC的计算” 2、添加事件结构 一、案例说明 在LabVIEW实现“YAXBXC的计算”的基础上&#xff0c;加上事件结构&#xff0c;实现单击一次按…

【读书笔记-《30天自制操作系统》-22】Day23

本篇内容比较简单&#xff0c;集中于显示问题。首先编写了应用程序使用的api_malloc&#xff0c;然后实现了在窗口中画点与画线的API与应用程序。有了窗口显示&#xff0c;还要实现关闭窗口的功能&#xff0c;于是在键盘输入API的基础上实现了按下按键关闭窗口。最后发现用上文…

初学者笔记本电脑玩转大模型系列二:微调谷歌Gemma模型

之前分享了《初学者笔记本电脑玩转大模型系列一&#xff1a;利用ollama跑大模型》&#xff0c;这不&#xff0c;Google发布了Gemma开放模型&#xff0c;同等参数尺寸性能最好的大模型&#xff0c;那么言归正传&#xff0c;如何在笔记本电脑微调Gemma模型呢&#xff1f;我们接下…

阿里云CTO:通义稳居全球最强开源大模型,性能接近GPT-4o

来源&#xff1a;首席数智官 9月19日&#xff0c;在2024杭州云栖大会上&#xff0c;阿里云CTO周靖人表示&#xff0c;阿里云正在围绕AI时代&#xff0c;树立一个AI基础设施的新标准&#xff0c;全面升级从服务器到计算、存储、网络、数据处理、模型训练和推理平台的技术架构体…

Temu应用全球下载量突破7.35亿次!美国占27%,还是主要市场

据了解&#xff0c;随着购物者更多选择Temu作为实惠的在线购物目的地&#xff0c;其月访问量在今年第一季度跃升至5亿次以上&#xff0c;应用下载量也大幅增加。据外媒报道&#xff0c;根据Stocklytics的最新数据&#xff0c;Temu应用程序截至目前的下载量已超过7.35亿次。 最新…

动态线程池(二)

动态线程池 环境搭建 启动Nacos和redis 安装Node-Exporter 安装Prometheus 安装Grafana 源码解析

鸢尾花书实践和知识记录[数学要素3-2乘除]

书的作者 文章目录 算术乘除&#xff1a;先乘除&#xff0c;后加减&#xff0c;括号内先算基本的乘法运算计算阶乘基本除法 向量的乘法&#xff1a;标量乘法&#xff0c;向量内积&#xff0c;逐项积标量乘法向量的内积对于inner和dot的实现方式的探究逐项积dot的计算过程 逐项…

MAC如何获取文件数字签名和进程名称

1、安装需要查看数字签名和进程名称的软件包 2、打开终端命令行(Terminal) 3、查找数字签名 在终端命令行中输入: codesign -dvv 安装的软件路径 2>&1 | grep "Authority=" | head -n 1 | cut -d = -f2”

PDF使用虚拟列表技术做渲染和加载带来的问题

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

JavaFX实现视频播放功能

一、前言 最近使用javaFx写了个简单的视频播放功能&#xff0c;可以实现打开本地视频播放。 二、实现 1.使用jdk8自带的javaFx包实现&#xff0c;首先定义一个类VideoPlayer。 代码如下&#xff1a; import javafx.application.Application; import javafx.application.Platf…

LAN8720A-CP-TR-ABC QFN-24 以太网收发器芯片

功能&#xff1a; 高性能收发器&#xff1a;支持10BASE-T和100BASE-TX标准&#xff0c;能够自动协商最佳速度和双工模式。 小尺寸&#xff1a;是业界尺寸最小的解决方案&#xff0c;适合空间受限的应用场景。 低功耗&#xff1a;功耗比现有的Microchip收发器低40%&#x…

【Unity】URP Rendering总结

unity-urp-rendering 介绍 个人学习总结&#xff0c;不定期更新 仓库 Unity版本&#xff1a;2022.3.42 Unity URP渲染管线下相关的渲染demo和总结 1. GPUInstance 1.1 Graphics.DrawMeshInstanced 1.2 Graphics.DrawMeshInstancedIndirect 1.3 MeshRenderer.SetPropertyBlock…

MTK芯片机型的“工程固件” 红米note9 5G版资源预览 写入以及改写参数相关步骤解析

小米机型:小米5 小米5x 米6 米6x 米8 米9 米10系列 米11系列 米12系列 mix mix2 mix2s mix3 max max2 max3 note3 8se 9se cc9系列 米play 平板系列等分享 红米机型:红米note4 红米note4x 红米note5 红米note6 红米note7 红米note8 红米note8pro 红米s2 红米note7pro 红米…

【C++算法】模拟算法

替换所有的问号 题目链接 替换所有的问号https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/ 算法原理 代码步骤 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){…

网络药理学:15、草稿暂存区

TCMSP 韦恩图在线网站 https://bioinfogp.cnb.csic.es/tools/venny/index.html String数据库参数详解&#xff1a;https://www.bilibili.com/video/BV1q64y1k7Zf?p16&vd_sourceaed4c634975918b14b7354ec93ce5389 David数据库可以用基因ID或者基因名。 KEGG数据库使用&am…

高效处理NPE!!

相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止 NPE&#xff0c;是程序员的基本修养。”但是修养归修养&#xff0c;也是我们程序员最头疼的问题之一&#xff0c;那么我们今天就要尽可能的利用Java8的新特性 Optional来…

视觉语言大模型模型介绍-CLIP学习

多模态学习领域通过结合图像和文本信息&#xff0c;为各种视觉语言任务提供了强大的支持。图像和文本的结合在人工智能领域具有重要的意义&#xff0c;它使得机器能够更全面地理解人类的交流方式。通过这种结合&#xff0c;模型能够处理包括图像描述、视觉问答、特征提取和图像…