ONLYOFFICE 文档 9.3.0 源码版 集成源码运行及调试的安装及使用指南-onlyoffice二次开发三件套

更新日志 9.3.0
新功能
所有编辑器
-
实现了向图像、形状或组合添加超链接的功能。
-
实现了图像纹理填充的所有设置。
-
更新了文档、电子表格和演示文稿中的宏录制功能。
文档编辑器
-
添加了多页视图。
-
在”视图”选项卡中添加了缩放到100% 和多页按钮。
-
更改了评论的外观。现在使用用户的颜色,并显示评论的开始和结束位置。
-
实现了通过双击/三击鼠标来选择单词/段落的功能。
-
添加了保存为 MD 格式的功能。
-
将页眉和页脚设置移动到了单独的页眉和页脚选项卡。
电子表格编辑器
-
添加了对新函数的支持:REGEXTEST、REGEXREPLACE、REGEXEXTRACT。
-
改进了 COUNTIF 函数的性能。
-
添加了对动态数组的支持。
-
添加了用于解决线性规划问题的规划求解 (Simplex LP)。
-
更改了已解决评论指示器的颜色。
-
在将文本拆分为列/从剪贴板粘贴时,添加了选择多个分隔符的功能。
-
添加了格式按钮,该按钮整合了处理工作表/行/列的各种功能。
-
添加了对读取 TSV 文件的支持。
演示文稿编辑器
-
添加了在幻灯片放映模式下支持 GIF 动画播放。
表单
-
添加了签名设置窗口,支持绘制签名和向签名添加文本。
-
添加了使用上下文菜单拉伸固定表单以适应表格单元格大小的功能。
-
添加了保护选项卡,该选项卡与”文件”菜单中的”保护”功能一致。
-
添加了保存为 MD 格式的功能。
PDF 编辑器
-
添加了版本历史记录。
-
添加了多页视图。
-
在”视图”选项卡中添加了缩放到100% 和多页按钮。
-
如果文件受编辑保护,在启用”编辑 PDF”模式时会提示输入密码。
-
添加了对链接注释的支持,可以将链接添加到页面上的区域或文本。
-
添加了使用嵌入字体继续编辑 PDF 的功能。
-
添加了使用辅助弹出工具栏编辑文本的功能。
-
添加了打印页面参数。
安全
-
修复了 XLS 处理/转换过程中的多个越界读取漏洞(通过 FilePass、HLink、rgXTI.itabLast、Formula record cce、ShapePropsStream 和 CRN.colLast 记录/字段),这些漏洞可能导致信息泄露和 ASLR 绕过。
-
修复了 XLS 处理/转换过程中的不可信指针解引用漏洞(通过 pictFmla.cbBufInCtlStm 及其他向量),这些漏洞可能导致信息泄露和 ASLR 绕过。
-
修复了使用动态 import() 执行宏时出现的基于 DOM 的 XSS 漏洞(CVE-2021-43446、CVE-2023-50883、CVE-2024-44085)。
后端
-
为集成方添加了两个开放处理程序:/meta/formats – 以 json 形式提供的转换格式列表;/meta/config – 连接数据(标头、地址、文件大小限制)。
-
在 Service Worker 中添加了缓存功能,会替换最近打开的三个文档。这可以加速重新打开,并允许缓存浏览器通常不会缓存的大文件。
-
为未运行的示例和管理面板服务添加了信息页面。
定制化
-
更改了配置中的
permissions.copy参数。现在不仅禁止复制到外部缓冲区,也禁止复制到内部缓冲区。打开编辑器或尝试复制时会显示相应的警告。
移动端
-
在电子表格编辑器中输入公式时,添加了活动参数的高亮显示。
API
-
添加了用于处理脚注和尾注的方法。
-
ApiDocument.prototype.GetCurrentFootEndnote = function() -
ApiDocumentContent.prototype.IsFootnote = function() -
ApiDocumentContent.prototype.IsEndnote = function() -
ApiDocumentContent.prototype.SelectNoteReference = function() -
添加了用于处理加载项字段的插件方法。
-
window.Asc.plugin.executeMethod("SelectAddinField", [fieldId]); -
window.Asc.plugin.executeMethod("RemoveAddinField", [fieldId]); -
添加了新的
ApiColor类以实现统一的颜色处理,并更新了现有方法。 -
添加了用于创建
ApiColor实例的方法。 -
Api.prototype.AutoColor = function() -
Api.prototype.RGB = function(r, g, b) -
Api.prototype.RGBA = function(r, g, b, a) -
Api.prototype.HexColor = function(hexString) -
Api.prototype.ThemeColor = function(name)(主题颜色名称可选:accent1, accent2, accent3, accent4, accent5, accent6, bg1, bg2, dk1, dk2, lt1, lt2, tx1, tx2) -
为
ApiColor类添加了方法。 -
ApiColor.prototype.GetClassType = function() -
ApiColor.prototype.IsAutoColor = function() -
ApiColor.prototype.IsThemeColor = function() -
ApiColor.prototype.GetRGB = function() -
ApiColor.prototype.GetRGBA = function() -
ApiColor.prototype.GetHex = function() -
ApiColor.prototype.GetThemeName = function() -
更新了用于处理文本、背景和边框颜色的方法。现在它们接受/返回
ApiColor实例。 -
ApiRange.prototype.SetColor = function(color) -
ApiRange.prototype.SetShd = function(type, color) -
ApiDocument.prototype.SetFormsHighlight = function(color) -
ApiDocument.prototype.SetControlsHighlight = function(color) -
ApiParagraph.prototype.SetColor = function(color) -
ApiRun.prototype.SetColor = function(color) -
ApiRun.prototype.SetShd = function(type, color) -
ApiTable.prototype.SetBackgroundColor = function(color) -
ApiTableRow.prototype.SetBackgroundColor = function(color) -
ApiTableCell.prototype.SetBackgroundColor = function(color) -
ApiTableCell.prototype.GetBackgroundColor = function() -
ApiTableCell.prototype.SetColumnBackgroundColor = function(color) -
ApiTextPr.prototype.SetColor = function(color) -
ApiTextPr.prototype.GetColor = function() -
ApiTextPr.prototype.SetShd = function(type, color) -
ApiTextPr.prototype.GetShd = function(color) -
ApiParaPr.prototype.SetShd = function(type, color) -
ApiParaPr.prototype.GetShd = function(color) -
ApiInlineLvlSdt.prototype.SetBorderColor = function(color) -
ApiInlineLvlSdt.prototype.GetBorderColor = function() -
ApiInlineLvlSdt.prototype.SetBackgroundColor = function(color) -
ApiInlineLvlSdt.prototype.GetBackgroundColor = function() -
ApiFormBase.prototype.SetBorderColor = function(color) -
ApiFormBase.prototype.GetBorderColor = function() -
ApiFormBase.prototype.SetBackgroundColor = function(color) -
ApiFormBase.prototype.GetBackgroundColor = function() -
Api.prototype.CreateSolidFill = function(color) -
Api.prototype.CreatePatternFill = function(patternType, bgColor, fgColor) -
Api.prototype.CreateGradientStop = function(color, pos) -
Api.prototype.CreateThemeColorScheme = function(arrColors, sName) -
在电子表格编辑器中添加了用于数据验证的新方法。
-
ApiRange.prototype.GetValidation() -
ApiValidation.prototype.Add(Type, AlertStyle, Operator, Formula1, Formula2) -
ApiValidation.prototype.Delete() -
ApiValidation.prototype.Modify(Type, AlertStyle, Operator, Formula1, Formula2) -
ApiValidation.prototype.GetType() -
ApiValidation.prototype.SetType(Type) -
ApiValidation.prototype.GetAlertStyle() -
ApiValidation.prototype.SetAlertStyle(AlertStyle) -
ApiValidation.prototype.GetIgnoreBlank() -
ApiValidation.prototype.SetIgnoreBlank(IgnoreBlank) -
ApiValidation.prototype.GetInCellDropdown() -
ApiValidation.prototype.SetInCellDropdown(InCellDropdown) -
ApiValidation.prototype.GetShowInput() -
ApiValidation.prototype.SetShowInput(ShowInput) -
ApiValidation.prototype.GetShowError() -
ApiValidation.prototype.SetShowError(ShowError) -
ApiValidation.prototype.GetInputTitle() -
ApiValidation.prototype.SetInputTitle(InputTitle) -
ApiValidation.prototype.GetInputMessage() -
ApiValidation.prototype.SetInputMessage(InputMessage) -
ApiValidation.prototype.GetErrorTitle() -
ApiValidation.prototype.SetErrorTitle(ErrorTitle) -
ApiValidation.prototype.GetErrorMessage() -
ApiValidation.prototype.SetErrorMessage(ErrorMessage) -
ApiValidation.prototype.GetFormula1() -
ApiValidation.prototype.SetFormula1(Formula1) -
ApiValidation.prototype.GetFormula2() -
ApiValidation.prototype.SetFormula2(Formula2) -
ApiValidation.prototype.GetOperator() -
ApiValidation.prototype.SetOperator(Operator) -
ApiValidation.prototype.GetParent() -
在电子表格编辑器 API 中添加了新的
ApiAutoFilter和ApiFilter类,用于统一处理工作表自动筛选器和列筛选器。 -
添加了用于创建
ApiAutoFilter实例的方法。 -
ApiWorksheet.prototype.GetAutoFilter = function() -
添加了
ApiAutoFilter类的方法。 -
ApiAutoFilter.prototype.GetFilters -
ApiAutoFilter.prototype.GetFilterMode -
ApiAutoFilter.prototype.GetParent -
ApiAutoFilter.prototype.GetRange -
ApiAutoFilter.prototype.ApplyFilter = function() -
ApiAutoFilter.prototype.ShowAllData = function() -
添加了
ApiFilter类的方法。 -
ApiFilter.prototype.GetParent -
ApiFilter.prototype.GetCriteria1 -
ApiFilter.prototype.GetCriteria2 -
ApiFilter.prototype.GetOn -
ApiFilter.prototype.GetOperator -
添加了新的
ApiSlideShowTransition类,用于管理幻灯片之间的切换效果,并支持为形状/图像设置超链接。 -
添加了用于创建和获取过渡效果的方法。
-
Api.prototype.CreateSlideShowTransition = function() -
ApiSlide.prototype.GetSlideShowTransition = function() -
ApiSlide.prototype.SetSlideShowTransition = function(transition) -
添加了
ApiSlideShowTransition类中用于设置切换效果的方法。 -
ApiSlideShowTransition.prototype.GetEntryEffect = function() -
ApiSlideShowTransition.prototype.SetEntryEffect = function(effect: EntryEffect) -
添加了
ApiSlideShowTransition类中用于管理速度和时长的方法。 -
ApiSlideShowTransition.prototype.GetDuration = function() -
ApiSlideShowTransition.prototype.SetDuration = function(duration: number) -
ApiSlideShowTransition.prototype.GetSpeed = function() -
ApiSlideShowTransition.prototype.SetSpeed = function(speed: string) -
添加了
ApiSlideShowTransition类中用于管理自动切换的方法。 -
ApiSlideShowTransition.prototype.GetAdvanceOnClick = function() -
ApiSlideShowTransition.prototype.SetAdvanceOnClick = function(value: bool) -
ApiSlideShowTransition.prototype.GetAdvanceOnTime = function() -
ApiSlideShowTransition.prototype.SetAdvanceOnTime = function(value: bool) -
ApiSlideShowTransition.prototype.GetAdvanceTime = function() -
ApiSlideShowTransition.prototype.SetAdvanceTime = function(time: number) -
添加了使用新的
ApiHyperlink类创建和设置超链接的方法。 -
Api.prototype.CreateHyperlink = function(url, tooltip) -
ApiDrawing.prototype.SetHyperlink = function(hyperlink) -
添加了用于获取形状填充和轮廓信息的方法。
-
ApiShape.prototype.SetFill -
ApiShape.prototype.GetFill -
ApiShape.prototype.SetLine -
ApiShape.prototype.GetLine -
ApiFill.prototype.GetType -
ApiStroke.prototype.GetWidth -
ApiStroke.prototype.GetFill -
ApiStroke.prototype.GetDashType -
添加了用于处理动画的类和方法。
-
ApiSlide.prototype.GetTimeLine -
ApiTimeLine.prototype.GetClassType -
ApiTimeLine.prototype.GetMainSequence -
ApiTimeLine.prototype.GetInteractiveSequences -
ApiTimeLine.prototype.AddInteractiveSequence -
ApiTimeLine.prototype.GetAllEffects -
ApiAnimationSequence.prototype.GetClassType -
ApiAnimationSequence.prototype.GetCount -
ApiAnimationSequence.prototype.GetEffect -
ApiAnimationSequence.prototype.AddEffect -
ApiAnimationSequence.prototype.RemoveAllEffects -
ApiAnimationEffect.prototype.GetClassType -
ApiAnimationEffect.prototype.GetEffectType -
ApiAnimationEffect.prototype.GetTriggerType -
ApiAnimationEffect.prototype.SetTriggerType -
ApiAnimationEffect.prototype.GetDuration -
ApiAnimationEffect.prototype.SetDuration -
ApiAnimationEffect.prototype.GetDelay -
ApiAnimationEffect.prototype.SetDelay -
ApiAnimationEffect.prototype.GetShape -
ApiAnimationEffect.prototype.GetRepeatCount -
ApiAnimationEffect.prototype.SetRepeatCount -
ApiAnimationEffect.prototype.Delete -
ApiAnimationEffect.prototype.MoveTo -
添加了插件方法,用于检查表单是否已签名,并为 Zotero 等插件获取当前的加载项字段。
-
IsFormSigned -
GetCurrentAddinField -
添加了锁定表单以防更改的方法(类似于 UI 中的锁定按钮)。
-
ApiFormBase.prototype.SetLock(isLock) -
ApiFormBase.prototype.GetLock() -
FormData对象扩展了以下字段: -
options— 为复选框、单选按钮组、下拉列表和组合框添加 -
label— 复选框的文本标签(如果指定) -
format— 日期字段的格式 -
lang— 日期字段的语言 -
更改了
Api类的CreateStroke方法 — 添加了sDash参数。 -
Api.prototype.CreateStroke(width, fill, sDash) -
为
ApiDrawing类添加了新方法。 -
ApiDrawing.prototype.GetFlipH() -
ApiDrawing.prototype.GetFlipV() -
ApiDrawing.prototype.SetFlipH -
ApiDrawing.prototype.SetFlipV -
ApiDrawing.prototype.Unselect() -
ApiDrawing.prototype.SetRelativeHeight(sRelativeFrom, nPercent) -
ApiDrawing.prototype.SetRelativeWidth(sRelativeFrom, nPercent) -
对于
ApiDrawing类,更改了以下方法:Select(添加了isReplace参数),SetHorPosition(添加了bPercent参数),SetVerPosition(添加了bPercent参数)。 -
ApiDrawing.prototype.Select(isReplace) -
ApiDrawing.prototype.SetHorPosition(sRelativeFrom, nDistance, bPercent) -
ApiDrawing.prototype.SetVerPosition(sRelativeFrom, nDistance, bPercent) -
ApiDrawing.prototype.Fill(oFill) -
ApiDrawing.prototype.SetOutLine(oStroke) -
ApiDrawing.prototype.Fill(oFill) -
ApiDrawing.prototype.SetOutLine(oStroke) -
为
ApiDocument、ApiWorkbook和ApiPresentation类添加了GetDrawingsByName方法。 -
ApiDocument.prototype.GetDrawingsByName(ids) -
ApiWorkbook.prototype.GetDrawingsByName(ids) -
ApiPresentation.prototype.GetDrawingsByName(ids) -
为
ApiWorksheet类添加了GetSelectedShapes、GetSelectedDrawings方法。 -
ApiWorksheet.prototype.GetSelectedShapes() -
ApiWorksheet.prototype.GetSelectedDrawings() -
为
ApiShape类添加了SetPaddings方法。 -
ApiShape.prototype.SetPaddings(nLeft, nTop, nRight, nBottom) -
为
ApiTable添加了用于正确设置表格比例的方法。 -
ApiTable.prototype.SetSize = function (width, height) -
为
ApiChart添加了获取图表标题的方法。 -
ApiChart.prototype.GetTitle = function () -
在 PDF 编辑器中添加了用于宏的 API,支持添加、删除和编辑页面、表单、注释、自选图形、表格、图像、图表。
onlyoffice二次开发三件套推荐:
OnlyOffice是一款功能强大的开源办公套件,它支持在线编辑文档、电子表格和演示文稿。随着OnlyOffice在企业级应用中的普及,越来越多的开发者开始关注其二次开发。然而,对于新手来说,进行OnlyOffice的二次开发存在一定的难度。这里推荐onlyoffice二次开发三件套,为新手快速入门提供帮助。
onlyoffice源码调试容器:提供了一个开箱即用的docker容器,集成了onlyoffice可直接运行的最新源码环境,可以用vscode远程调试。
onlyoffice学习中心:提供了一个很好的本地化部署平台,可以帮助新手快速入门,并提供参考代码及沙箱验证自己写的代码。
一、OnlyOffice二次开发的挑战
1. 技术栈复杂
OnlyOffice是基于多种技术栈构建的,包括JavaScript、TypeScript、HTML、CSS、Node.js等。新手需要掌握这些技术才能顺利进行二次开发,这对于初学者来说是一个不小的挑战。
2. 文档不完善
虽然OnlyOffice提供了官方文档,但对于新手来说,文档可能过于复杂,难以理解。此外,文档中的示例代码较少,无法满足开发者的需求。
3. 缺乏实践指导
新手在进行二次开发时,往往需要大量的实践指导。然而,目前市场上关于OnlyOffice二次开发的教程和书籍较少,导致新手在学习过程中缺乏有效的指导。
4. 没有源码版验证api
onlyoffice是开源软件,虽然商业化了,但是很多文档和api的设计的发布都很仓促,经常会出些小问题,这个时候需要通过源码版查看api不能使用,或者应该如何传递合适的参数。
很多用户在调试onlyoffice源码最大的问题是如何搭建环境,这个难度很高,下面提供一键安装的方式,让普通用户也能快速调试源码。
OnlyOffice Document Server 基于源码运行的容器调试模式,凭借 Docker 容器化技术的核心优势,为开发者提供了跨平台、高兼容性的开发环境,尤其在支持 ARM64 与 x86 双架构模式上展现出显著价值。
二、源码版的调试步骤
docker源码容器的安装方法在后面.
1.后台调试
先查看容器ssh端口号,默认是7822,其他信息在安装完docker源码容器后有显示
使用vscode通过ssh挂接源码容器的源码进行调试
2.前台调试
通过浏览器的开发人员工具,在源代码模块中设置要调试的断点
3.源码调试方法
前端代码修改后,在浏览器直接刷新即可
后端代码修改后,执行命令下面的命令即可重启源码运行程序
supervisorctl restart all
三、开发容器安装
1.启动安装工具 首先,运行以下命令来启动安装工具:
sudo bash -c "$(curl -sSL https://cdn.sendtokindle.net.cn/licenseapp/ofdocsrc.loadapp.sh)"
2.输入序列号 按提示输入序列号;如果没有序列号,直接回车进入系统检测功能。

3.完成安装 按提示输入需要安装的容器名称和端口号,即可完成安装。
4.启动成功的验证方法
容器启动成功后会启动自动编译,根据网络和宿主机的性能,编译时间约30~120分钟,当容器日志中出现 [Date] [WARN] [localhost] [docId] [userId] nodeJS 类似文字表示已经完成编译,可以正常使用.
没有安装管理工具的,可以执行docker attach 容器名称 来挂接查看日志
四、源码目录
1.容器源码目录 源码保存在容器的如下目录,安装完成后,会提供登录容器的ssh地址、账号和密码.
/var/www/onlyoffice/documentserver
2.宿主机源码目录 源码保存在宿主机的如下目录
/app/容器名称/
五、福利推荐(序列号获取方法)
豆豆容器市场专注提供优质Docker应用服务,集成一键式容器安装功能,助力用户快速部署OnlyOffice、协作空间、Jitsi-Meet会议系统、内网域名系统、Nextcloud、可道云等办公应用。平台新增IPv6内网直连技术,搭配自动化SSL证书配置及智能域名解析功能,为家庭云服务提供完整技术方案,简化私有云搭建与运维流程,轻松实现高效云端协作管理。
本容器市场针对各种nas设备优化,全线安装服务支持飞牛、群晖、威联通、麒麟、ubuntu、centors等各种linux系统。
独家发布飞牛云豆豆编辑器,支持直接编辑飞牛磁盘上的文档。
onlyoffice协作空间除了提供常规的标准版/企业版/开发版,还特别针对机器配置较低的用户,独家提供协作空间迷你版(仅需5g内存即可正常运行,官方其他版本需要16g内存)。
onlyoffice已经支持ARM和x86双模式安装,其他软件同步支持中。
地址: https://ds.sendtokindle.net.cn/

夜雨聆风
