控件编程模型
WebOffice控件的编程模型为WebOffice,派生自控件编程模型基类Control:
Java |
|
package kd.bos.form.control; public class WebOffice extends Control{ |
插件可以通过如下代码,获取到界面上WebOffice控件编程模型实例:
Java |
|
WebOffice webOffice = this.getView().getControl("webofficeap"); |
WebOffice控件,目前有如下方法:
方法 |
参数 |
说明 |
save |
String 文件名 |
保存文档 |
close |
无 |
关闭文档 |
open |
String 文档URL |
打开文档 |
open |
String,String 文档URL,用户名 |
打开文档 |
open |
String,List<String>,String 文档URL,书签,密码 |
打开文档,仅设定可编辑区域才可供用户修改 |
open |
String,String,List<String>,String 文档URL,用户名,书签,密码 |
打开文档,仅设定可编辑区域才可供用户修改 |
openNew |
WebOfficeFileType 文件类型 |
支持新建word、excel、ppt |
openAll |
String, String URL文档,文件名 |
支持打开多种文档包含Excel,需要传入文件名以打开文件 |
addTable |
String[][] 插入数据 |
添加表格 |
addTable |
String,String[][] 书签,插入数据 |
指定处添加表格 |
setTrackingMode |
String, WebOfficeTrackingType 用户名,类型 |
设置留痕模式 |
addBookmarkForSelection |
String 书签 |
为鼠标选中内容设置为书签 |
setTextStyle |
String,String 书签名,第二个参数取值:'标题、'引用'等,具体查看word的标题样式名称 |
调整指定书签内容的标题样式 |
mergeDocs |
WebOfficeMergeType, String[] 合并类型,合并文档URL |
合并其他文档至当前文档 |
mergeDocsByBookmark |
String,String[] 书签,合并文档URL |
合并其他文档至当前文档选中页签处 |
addTableColumns |
String,String[][] 书签,列数据 |
表格添加列数据 |
addTableRows |
String,String[][] 书签,行数据 |
表格添加行数据 |
setCheckBoxChecked |
String,String…是否选中,复选框 |
设置复选框值 |
getAllCheckBoxs |
无 |
获取文档中所有的复选框 |
getTextByBookmark |
String 书签 |
依据书签获取文档内容 |
isDocChanged |
无 |
获取文档是否有改动 |
getAllBookmarks |
无 |
获取所有书签 |
checkBookmark |
String 书签 |
查询书签是否存在 |
showTracesBy |
String,boolean 用户名,是否显示修改痕迹 |
按照用户名是否显示某用户的修改痕迹 |
showAllTraces |
boolean 是否显示 |
切换显示痕迹 |
setEditableAreas |
List<String>,String 书签,密码 |
设置文档可编辑区域,只有传递标签选中区域才能被当前用户编辑 |
setDocUnLimitByRole |
List<String> 书签 |
取消文档可编辑区域,可编辑其他区域 |
deleteSelectedAreaEditBookmark |
String 书签 |
删除编辑标签 |
setSelectedAreaEditBookmark |
String 书签 |
对选中区域设置可编辑标签 |
unLimitDoc |
String 密码 |
解除限制文档编辑 |
limitDoc |
String 密码 |
限制文档编辑 |
cancelProtectDoc |
String 密码 |
取消文档保护 |
protectDoc |
WebOfficeDocProtectionType, String 保护类型,密码 |
文档保护 |
showCommentDialog |
无 |
弹出添加批注的框 |
locateMark |
String 书签 |
定位书签 |
deleteMarks |
List<String> 书签列表 |
删除书签 |
modifyMarks |
List<WebOfficeMark> 书签列表 |
修改书签 |
addMarks |
WebOfficeMark 书签 |
添加书签 |
insertValue |
String 值 |
插入值 |
insertValue |
String,boolean 值,是否换行 |
插入值 |
compareFile |
String,String,String, String 第一个文档URL,第一个文挡名称,第二个文挡URL,第二个文档名称 |
比较文档 |
sendIsFieldRevise |
String 书签 |
是否被修订 |
setCaption |
String 标题 |
插入标题 |
setMenubar |
Boolean是否显示 |
设置菜单栏是否显示 |
setTitlebar |
Boolean 是否显示 |
设置标题栏是否显示 |
setDocAsField |
String 书签 |
设置整个文档内容为书签 |
setToolbars |
Boolean 是否显示 |
设置工具栏是否显示 |
sendOpenStatus |
无 |
获取文档打开状态 |
reportData |
Map<String,Object> 数据 |
回调数据 |
upload |
Map<String, Object> 文档上传成功后的相关信息 |
文档上传成功后上报接口 |
addDataListener |
WebOfficeDataListener weboffice前端数据回调事件监听 |
添加前端数据回调事件 |
addUploadListener |
UploadListener 上传事件监听器 |
添加上传事件 |
getDataListeners |
无 |
获取数据监听器 |
afterClose |
Map<String,Object> 数据 |
数据发生改变,weboffice浏览器关闭后可触发关闭后事件 |
温馨提示
WebOffice控件打开需要浏览器帮助类WebOfficeBrowserHelper,否则在Chrome上打开无法显示。
- 案例说明:
点击开一个有WebOffice控件的表单,否则直接在Chrome上打开会导致显示空白:
下面这个是使用浏览器帮助类打开后的页面,可以正常显示出来:
- 示例代码:
Java |
|
public class WebOfficeSample extends AbstractFormPlugin { ... @Override public void itemClick(ItemClickEvent evt) { super.itemClick(evt); switch (evt.getItemKey()){ case "btn_doc": showDocEdit();break; } }
public void showDocEdit(){ .... Map<String,Object> customParams = new HashMap<>(); customParams.put("id",id); customParams.put("doc_number",docNumber); customParams.put("doc_url",docUrl); customParams.put("doc_name",docName); /** * 内建浏览器打开方式参数 * @param String formId 表单Id */ WebOfficeBrowserParam webOfficeBrowserParam = new WebOfficeBrowserParam("test_wb_tpl_edit"); //设置参数 webOfficeBrowserParam.setParams(customParams); webOfficeBrowserParam.setHideAddressBar(true); // 调用浏览器帮助类,构建打开参数,返回url String url = WebOfficeBrowserHelper.buildUrl(webOfficeBrowserParam); getView().openUrl(url); }
} |
|
|
控件使用示例
1、 save方法
- 案列说明:点击保存按钮保存文件
- 示例代码:
Java |
|
public class WebOfficeSample extends AbstractFormPlugin { @Override public void registerListener(EventObject e) { addClickListeners("btn_save"); } @Override public void click(EventObject evt) { super.click(evt); Control ctrl = (Control) evt.getSource(); switch(ctrl.getKey()){ case "btn_save": saveDoc();break; default: break; } } private void saveDoc (){
String name = (String)this.getModel().getValue("name"); If(StringUtils.isBlank(name)){ getView().showErrorNotification("文件名不能为空"); return; } WebOffice webOffice = getControl("webofficeap"); /** * WebOffice 调用save方法 * @param name 文件名 */ webOffice.save(name); }
} |
|
|
2、 close方法
- 案列说明:点击关闭按钮关闭文件
- 示例代码:
Java |
|
public class WebOfficeSample extends AbstractFormPlugin { //……其他类似简略 private void close (){ WebOffice webOffice = getControl("webofficeap"); /** * WebOffice 调用close方法 */ webOffice.close(); }
} |
|
|
|
|
|
|
3、 open方法
- 案列说明:点击打开按钮WebOffice打开文档
- 示例代码:
Java |
|
public class WebOfficeSample extends AbstractFormPlugin { //……其他类似简略 private void openDoc (){ //这里的url可以是通过上传附件后获取到的url,也可以是本地文档url String url ="D://feature//bos_core//kd_bos//bos//webofficedemo//src//main//resources//docsUrl.docx"; WebOffice webOffice = getControl("webofficeap"); /** * WebOffice 调用open方法 * @param url 文件url |