毕升目前提供的UI配置项包括:
在集成毕升office时可以通过3种方式达到自定义UI的效果:
UI模版与客户端参数控制UI的区别
效果的区别在于:文件打开时,UI上显示为从服务器上下载的html,此html是根据服务器端参数编辑出来的。因此如果服务器上没有隐藏工具栏的参数时,在文件打开的瞬间,UI上依然会看到工具栏,在后续代码执行中之后,该工具栏会隐藏。
因此如果你需要实现默认隐藏工具栏的功能,需要在服务器上配置该选项,以保证服务器可以根据该选项来编译模版。此时才能保证文件打开时,系统默认是隐藏工具栏
在配置文件中定义UI需要按照如下格式在配置文件中(脚本目录/workspace/config/config.yml)添加如下配置。
修改配置文件后依次执行bash upgrade.sh bash restart.sh
uiconfig:
disablecontextmenu: true #禁止右键菜单
disablecopy: true #禁止预览模式下的拷贝
showhiddensymbol: true #显示word中的隐藏字符,例如:回车符
hiddenruler: true #是否隐藏标尺
disablefullscreen: true #禁止全屏
disablerightmenu: true #禁止右侧菜单
disablefiltersync: true #为true时禁止筛选结构同步
disablegroupsync: true #为true时禁止筛选结构同步
defineribbon: true # 是否使用Office默认一级菜单入口
hiddentoolbar: true # 是否隐藏全部工具栏菜单
logourl: "" #自定义logo图片的地址
logolink: "" #自定义点击logo时的跳转地址,默认没有设置时跳转到网盘
editorzonezoom: "" # 打开编辑器时的缩放比例,字符串,如果为100%,则传入"100",如果为"fit",则宽度自适应容器。Excel编辑器不支持"fit"参数,将默认以100%显示。
viewerzonezoom: "" # 打开预览时的缩放比例,字符串,如果为100%,则传入"100",如果为"fit",则宽度自适应容器。Excel编辑器不支持"fit"参数,将默认以100%显示。
pdfviewerzoom: "" # 打开pdf预览时的缩放比例,字符串,如果为100%,则传入"1",其它适应参数,"auto", "page-actual", "page-fit", "page-width"
disablelogo: true #关闭logo
disablemobileeditorhomebutton: true # 关闭移动端编辑器主页按钮
defaulttab: home #定义打开编辑时默认打开菜单项,默认值为home,表示默认显示开始菜单。
disableremainpage: false #为true时关闭文档自动定位到上次页面的功能
selectedtext:
enable: true #是否打开选中文字时的右键菜单。默认是false
items: #菜单数组
- title: 回调一 #菜单上显示的内容
key: call1 #该菜单的key,回调时会传递回去
- title: 回调二
key: call2
files: #定义文件菜单
disable: true #是否关闭文件一级菜单
title: 文件 #文件菜单的标题
subui: # 关闭文件菜单下的一些功能入口
outline: true #关闭大纲
save: true #是否关闭保持按钮
print: true #是否关闭打印按钮
export: true #是否关闭导出按钮
about: true #关闭about按钮
rename: true #禁用文档名称
exportdocs: true #为true时禁用下载office
exportpdf: true #为true时禁用下载PDF
open: true. #关闭打开文件
newversionlabel: "新版本" #自定义新版本按钮的显示文字
start:
disable: true
title: 开始
insert:
disable: true
title: 插入
sub_ui:
headerandfooter: true
contentcontrol: true #关闭内容控件
seal: true #关闭签章
document: true #关闭插入文档
graffiti: true #为true时关闭手写
equation: true #为true时关闭插入公式
reference:
disable: true
title: "引用"
sub_ui:
toc: true #禁止目录入口
updatetoc: true #禁止更新目录入口
footnote: true
bookmark: true
collaboration:
disable: true
title: 协同
subui:
tcmode: true #关闭显示修订模式
accept: true
reject: true
comments: true #批注(评论)
commentsbubble: true #关闭添加批注的浮动UI
acl: true. #关闭权限
share: true #关闭共享
opentrackchange: true
closetrackchange: true #关闭文档的修订模式,但是用户可以在后续操作中自行打开修订
trackchangemodeinpreview: "" # 预览状态修订显示模式(final, original, 空,disable:关闭ui)
trackchangemodeineditor: "" # 编辑状态修订显示模式(final, original, 空)
checkcomments: uid #批注的操作条件,可以为空。为uid时表示:只有本人可以删除,修改自己的批注
checkreviews: uid #修订的操作条件,可以为空。为uid时,表示只有本人可以删除,接受自己的修订
highlightchangemode: none # 多人编辑时是否显示其他人的更新:默认是显示最后一次更新,即显示当前用户最后一次以来的更新,如果设置为none,为关闭高亮;设置为all,高亮所有更新
hideotherscomments: true/false #是否隐藏其他人的批注。为true时隐藏
layout:
disable: true
title: 布局
subui:
printarea: true #是否禁用打印区域,默认值不禁止
data:
disable: true #关闭数据主菜单
subui:
dataSource: true #关闭数据源
rightmenu:
disable: true #是否关闭 右侧菜单
subui:
history: true #关闭右侧菜单中的历史记录
properties: true #关闭右侧菜单中的属性设置入口
comments: true #关闭批注
bookmarks: true #关闭书签
controls: true #关闭内容控件
celllock: true #关闭单元格锁定,(仅Excel生效)
notice:
disableversiondlg: true #关闭版本变更时的提示
hightlight:
bookmark:
open: true #默认开启高亮书签,文档打开时默认开启书签高亮。
color: '#A1A1A1' #书签高亮的颜色,在open为true时,如果color不为空,则使用该值,否则使用默认值
contentcontrol:
open: true #默认开启内容控件的高亮,文档打开时默认开启书签高亮。
color: '#A1A1A1' #书签高亮的颜色,如果内容控件没有设置高亮颜色,则使用该配置的颜色。
notice:
network: true #关闭网络连接提示
formatrestore: true #关闭格式恢复
以上配置系统默认配置数据。如果对某一些部分进行自定义,自需要把该部分的配置加到配置文件中即可。例如我自需要定义协同菜单:需要把“协同”的名称改成“审核”,强制打开审核模式,同时不需要评论功能。则我的配置可以如下:
uiconfig:
collaboration:
title: 审核
subui:
comments: true
opentrackchange: true
配置完之后,重启服务之后,UI将是:
调用参数中指定UI配置是指在集成方响应callurl时在"opts" key下uiconfig返回UI配置(具体例子参考下图)。该UI配置完成的数据结构如下(json格式):
{
"disableContextMenu": true, //禁止右键菜单
"disableCopy": true, //预览模式下禁止拷贝
"showHiddenSymbol": true, //显示word中的隐藏字符,例如回车符号
"hiddenRuler": true, //是否隐藏标尺
"disable_right_menu": true, //禁用右侧菜单
"disableGroupSync": true, //为true时禁止 分组打开,关闭同步
"disableFilterSync": true , //为true时禁止 筛选结构同步
"disable_full_screen": true, //禁止全屏
"logourl":"" , //自定logo的url
"define_ribbon": true, // 隐藏Title条
"hide_toolbar": true, // 隐藏所有工具条菜单
"default_tab": "home", // 定义打开编辑时默认打开菜单项,默认值为home,表示默认显示开始菜单。
"editor_zone_zoom": "", // 打开编辑器时的缩放比例,字符串,如果为100%,则传入"100",如果为"fit",则宽度自适应容器。Excel编辑器不支持"fit"参数,将默认以100%显示。
"viewer_zone_zoom": "", // 打开预览时的缩放比例,字符串,如果为100%,则传入"100",如果为"fit",则宽度自适应容器。Excel编辑器不支持"fit"参数,将默认以100%显示。
"pdf_viewer_zoom": "", // 打开pdf预览时的缩放比例,字符串,如果为100%,则传入"1",其它适应参数,"auto", "page-actual", "page-fit", "page-width"
"disable_logo": true, //关闭logo
"disable_remain_page": true //为true时关闭文档自动定位到上次页面的功能
"selected_text":{ //通过右键获取被选中的文字内容,默认不配置
enable: false,
items: [{
title:"回调一",
key:"call1"
},{
title:"回调二",
key:"call2"
}] //菜单数组
},
"selected_cell":{ //通过右键获取Excel中选中的单元格区域
enable: true,
items: [{
title:"回调一",
key:"call1"
},{
title:"回调二",
key:"call2"
}] //菜单数组
},
"files":{
disable: true,
title: "文件",
sub_ui:{
outline:true,
save: true,
print: true,
export: true,
about: true,
rename: true, //关闭文件名称
export_pdf: true, //为true时禁用下载PDF
export_docs: true, //为true时禁用下载office文件
open:true
}
},
"start":{
disable: false,
title: "开始"
},
"insert":{
disable: true,
title: "插入",
sub_ui:{
headerAndFooter: true,
contentControl: true,
control: true, //关闭内容控件
seal: true, //关闭签章
document: true, //关闭插入文档
graffiti: true, //关闭手写
equation: true //为true时关闭插入公式
}
},
"reference":{
disable: true,
title: "引用",
sub_ui: {
toc:true,
updateToc:true,
footnote: true,
bookmark: true,
}
},
"layout":{
disable: true,
title: "布局",
sub_ui: {
print_area:true,
}
},
"collaboration":{
disable: true,
title: "协同",
sub_ui: {
tcmode: true //关闭显示修订模式
accept: true, //关闭接受修订
reject: true,//关闭拒绝修订
comments: true, //批注(评论)
commentsBubble: true // 关闭word添加批注浮动UI
acl: true, //关闭权限
share: true
},
open_track_change: true, // 是否用户编辑时强制开启修订模式输入
track_change_mode_in_preview: '', //预览状态修订模式(final,original,disable:ui不显示)
close_track_change: true,//是否关闭文档的修订模式。当该值为true时,文档打开会关闭修订。但是用户可以通过操作打开。open_track_change 为true时,该设置失效。
track_change_mode_in_editor: '', // 编辑状态修订显示模式(final, original, 空)
check_comments: uid,
check_reviews: uid,
high_light_change_mode: '', //多人编辑时是否显示其他人的更新:默认是显示最后一次更新,即显示当前用户最后一次以来的更新, 如果设置为none,为关闭高亮;设置为all,高亮所有更新
hide_others_comments:true/true // 是否隐藏其他人批注
},
"data":{
disable: true, //是否关闭数据入口
title: "数据",
},
right_menu:{
disable: true //是否禁用右侧菜单
sub_ui:{
history: true, //关闭右侧菜单中的历史记录
properties: true, //关闭右侧菜单中的属性设置入口
comments: true, //关闭批注
bookmarks: true, //关闭书签
controls: true, //关闭内容控件
celllock: true, //关闭单元格锁定,(仅Excel生效)
}
},
notice:{
disable_version_dlg: true //关闭文件版本变更时提示
},
drive:{
index: "" //自定义drive主页
title: "" //自定义标题
},
hightlight:{
bookmark:{
open: true, //默认是否开启书签高亮
color: "#A1A1A1",//默认书签高亮的颜色,如果不配置该值,则使用默认颜色(灰色)。
},
contentControl:{
open: true, //默认开启内容控件高亮
color: "#F1F1F1",//设置内容控件默认高亮颜色,如果内容控件没设置背景色,则使用默认值,如果该值不设置,则默认时灰色
}
},
notice:{
network: true //关闭网络连接提示
formatRestore: true //关闭格式恢复
}
}
参考集成是参数说明自定义UI,增加UI配置之后,callURL返回值的结构为:
{
doc:{},
user:{},
opts:{
"uiconfig":{}//自定义UI
}
}
在使用调用参数来自定义UI时,需要 在opts下增加key "uiconfig",值为自定义UI的数据。例如同样对于上面的例子:需要把“协同”的名称改成“审核”,强制打开审核模式,同时不需要评论功能。如果使用调用参数来实现,callurl返回值如下:
uitemplates:
- tid: one #该模版的ID,
type: docx #该模版应用的文件类型
hiddentoolbar: true #以下为该模版的具体选项,选项的意义和上文在配置文件中定义UI的基本相同。
disablelogo: false
defaulttab: layout
data:
disable: true
rightmenu:
disable: true
- tid: two
type: xlsx
hiddentoolbar: true
当需要使用自定义模版时:在打开文件的时候,需要在opts选项中增加参数tid,值为模版的ID,例如要使用id为one的模版,则打开文件时的参数为:
{
doc: {
docId: "bishengoffice",
title: "毕升Office测试.docx",
fetchUrl: "https://bisheng-upload.nodoc.cn/system/毕升Office免费私有化部署手册.docx",
opts:{
tid:"one" //指定该模版的ID。
}
},
user: {
uid: "admin",
nickName: "管理员",
avatar: "https://bisheng-upload.nodoc.cn/system/defaultAvatar.png"
},
}
首先需要明确的是:配置文件定义UI是全局的,会影响到word,excel,ppt编辑器;而参数定义UI只会影响到某一次打开编辑器。如果对于某个一级菜单的定义,参数方式会覆盖配置文件。覆盖级别是一级入口开始进行覆盖:如果配置文件中定义了“文件”入口以及下属的功能入口,参数中也定义了“文件”入口以及下属功能入口,则配置文件中的定义将被覆盖
对于部分用户集成时为了使得UI能够和系统进行更好的融合,需要自定义一级菜单入口。这是用户可以使用上面配置文件(调用参数)中的defineribbon(json格式为define_ribbon);当这个值为true时,毕升的一级菜单将被隐藏。效果图如下:
此时,用户可以通过个API来实现各个一级菜单的转跳:例如用户需要从上图中的菜单进入到文件菜单,则需要调用API: window.bisheng_switchtab("file")
下面是进入文件,开始,插入,协同,数据五个菜单的API调用方式:
进入文件菜单: window.bisheng_switchtab("file")
进入开始菜单: window.bisheng_switchtab("home")
进入插入菜单:window.bisheng_switchtab("ins")
进入协同菜单:window.bisheng_switchtab("collab")
进入布局单:window.bisheng_switchtab("layout")
进入数引用单:window.bisheng_switchtab("ref")
当配置设定defaulttab值时,编辑器打开时将默认显示相应的菜单。
在隐藏一级菜单之后,用户可以根据自己设计顶级菜单入口,并使用子菜单API来实现进入子菜单,具体如下图案例:
通过配置中的selectedtext可以在右键菜单中增加一项来获取word中被选中的内容,并且定义相应的处理函数可以进行用户自定义的处理。
当鼠标点击新增的菜单项时,将会调用相应的处理过程。
用户可以在window对象下定义函数selTxtCallback(content),该函数将会在点击菜单项时被调用。
当毕升Office是在iframe中使用时,需要在父frame中捕获message事件,当点击菜单项时,会将内容发送到上层frame中。
window.addEventListener('message', e=>{
let data = e.data;
console.info(data); //data的内容为{command: "SelectContent",content: ""}
});
毕升Office发送到父frame中的消息都是通过command来区分,command为 SelectContent时,表示该消息是选择word内容并通过右键菜单主动触发的,其中content为文本的内容。
在上面的配置项说明中通过editorzonezoom,viewerzonezoom,pdfviewerzoom三个配置来实现编辑模式,预览模式,以及PDF预览的缩放比例。
editorzonezoom/viewerzonezoom配置可选值有:
大于零的数值,使用数值时表示编辑/预览默认打开时相对于标准大小的百分比(例如word大部分情况为A4宽度)。例如为100时,表示使用标准宽度,120表示1.2倍宽度。使用数值设置值不影响编辑器右下方缩放UI功能。
字符串 "fit"。当配置的值为fit时,表示编辑/预览区域宽度为自适应的。缩放会随着编辑器可用区域的变化而自动变化。此时编辑器右下方缩放UI将不再出现。
例如下图时配置为120时编辑区宽度,并且编辑区不随走它空用区域(拉大缩小浏览器)的影响。
当配置为fit时,如下图下图:
Excel编辑器不支持"fit"参数,设置为"fit"时,Excel文档将默认以100%显示,编辑器右下方缩放UI不会隐藏。