# 流版签(OfficeSDK)技术说明文档
# 背景&作用
过去版本每集成一套流版签产品,就是同一个类中增加if...else写法,长此以往造成了流版签新产品极高的集成扩展成本。
V9.0SP1采用统一接口的方式,提供了一套标准API接口,项目上如有新的流版签产品(如永中wo/dcs、福昕轻阅读、联想中台等)需要集成,则参考API做集成即可,无需将代码耦合到产品核心库中。
# 适用版本
协同V9.0SP1及未来版本
# 名词解释:
套红:将文单中的值组合成文本、图片插入到word文档中对应的书签位置。
清稿:保存当前正文的一个备份文件,然后删除文档中的手写批注、修改的痕迹,并保存正文。
花脸:清稿操作中保存的备份文件。
# 1.使用方式
# 1.1页面引入
// 在需要使用的html页面引入officeSDK.js
<script type="text/javascript" src="/seeyon/common/office/js/officeSDK.js"></script>
注意:如果是PC端,当前页面必需引入了jQuery的ajax请求,并且能通过$.ajax调用;如果是移动端,当前页面必需引入cmp平台库。
# 1.2初始化
var params = {
fileId: "", // 文件id
fileType: "", //文档类型
editType: "", // 编辑权限 (编辑:’2,1’,只读:’0,0’ 或者 ’4,0’)
}
var officeSDK = new OfficeSDK(params);
var initParams = {
domId:’’, //插件加载的目标 DOM 元素的 ID。
fileType:’’,//文档类型'docx', 'doc', 'wps', 'xlsx', 'xls', 'et', 'ods', 'csv', 'pptx', 'ppt', 'dps', 'odp'
mode:’VIEW’,//打开模式VIEW、EDIT、SIGN 三选一
}
ES5写法:
officeSDK.init(initParams, function(error, result){
// TODO:初始化完后的回调
});
ES6写法(async/await):
try { let ret = await officeSDK.init(initParams);
// TODO:初始化成功
}catch(e) {
// TODO:初始化失败
}
# 1.3打开文件
打开文件目前有两种方式:
1、嵌入式打开 嵌入式打开需要在init的时候给domId设置挂载点的元素id,流版签插件将会作为子元素挂载在页面上
2、弹窗式打开 弹窗式打开需要在openfile的时候设置isDialog为true,流版签插件将会挂载在自己的弹窗中显示出来。如果需要弹出隐藏的方式需要设置isHide为true(嵌入式不支持隐藏式打开,需要业务自己控制挂载点的显示/隐藏)
var openParams = {
isDialog: true,//是否是弹窗打开
isHide:true,//是否隐藏式打开(主要针对弹窗的打开方式)
showDialogTitle:’正文’,//弹窗标题
noTransFlag:false,//是否需要显示预览(客户端模式的三方插件需要,如:WPS客户端)true:不显示,false:显示
}
officeSDK.openFile(openParams, function(error, result){
// TODO:打开文件后的回调
});
# 2.接口说明
# 2.1初始化参数说明
{
/** 文件ID */
fileId: "",
/** 文件保存到本地时候的文件名字*/
fileName: "",
/** 创建时间 */
createDate: "",
/** 应用的URL,例如http://127.0.0.1/seeyon */
webRoot: OfficeSDK.utils.getWebRoot(),
/** 文档类型 .doc,.docx,.xls,.xlsx*/
fileType: "",//文档类型
contentId: "",
editType: "",
/** 系统配置的最大的文件上传大小 */
officeOcxUploadMax: "",
/** 当前的国际化语言环境 */
currentLanguage: OfficeSDK.utils.currentLanguage(),
/** 原始文件的创建时间,例如调用模板的时候,模板文件的创建时间*/
originalCreateDate: "",
/** 原始文件的文件ID,例如调用模板的时候,模板文件的文件的ID*/
originalFileId: "",
/** 是不是需要clone原始文件*/
needCloneFile: "",
/**当前用户ID */
userId: "",
canCopy: 1, // 是否能够复制
/** 当前用户的name */
currentUserName: "",
/*代理人ID*/
affairMemberId: "",
/*代理人姓名*/
affairMemberName: "",
/** 文件大小 */
officeFileRealSize: "",
/** 是否可以修改正文*/
canEditContent: OfficeSDK.utils.getCanEditContent(),
/** 当前页面是那个页面*/
currentPage: "",
originalNeedClone: "",
extendParams: {},
mode: 'view',//view edit sign
// 编辑器内转OFD按钮能否使用
canTransOfd: undefined,
// 编辑器内转PDF按钮能否使用
canTransPdf: undefined,
// 编辑器内下载按钮能够使用
canDownload: undefined,
// 编辑器内能上传按钮能使用
canUpload: undefined,
// 编辑器内打印按钮能够使用
canPrint: undefined,
/** 当前打开,修改保存Office文档是否保留痕迹。某些情况下可能不需要保留痕迹,例如协同公文的新建*/
// 编辑器内的盖章按钮能够使用
canSign: undefined,
// 编辑器内的验章按钮能够使用,验证按钮默认不受控制
canCheckSign: undefined,
// 编辑器内的清稿按钮能够使用
canClearTrail: undefined,
// 痕迹按钮是否显示
isShowTrailBtn: undefined,
// 编辑正文时是否开启修订模式(保留修改痕迹)
canRevise: undefined,
// 关闭弹窗的回调函数
dialogCloseCallback: null,
// 添加对应的流程Id
processId: (typeof (processId) != "undefined" ? processId : (typeof parent.processId != "undefined" ? parent.processId : parent.parent.processId)),
};
# 2.2 init
函数描述:初始化 SDK 插件函数
函数原型:function init (params = {}, callBack)
函数入参:
@param {Object} params - 初始化插件所需的参数对象,可以为空对象。
{
@param {string} params.domId - 插件加载的目标 DOM 元素的 ID。
@param {string} params.fileType - 文档类型 //'docx','doc','wps','xlsx','xls','et','ods','csv','pptx','ppt','dps','odp'。
@param {string} params.mode - 模式 DOM VIEW、EDIT、SIGN 三选一
}
@param {Function} callBack - 初始化完成后的回调函数,可选参数。
返回结果:返回promise对象
例:
officeSDK.init(initParams, function(error, result){
if (error) {
// 初始化失败
} else {
// 初始化成功
}
});
说明:callBack返回两个值,第一个值返回error,第二个值result返回调用后台接口函数执行的结果。
如果返回的error不为null,表明初始化adapter失败,当前插件配置不支持当前的文件类型打开。如果为null,则有合适的adapter。result的返回值{code:0,msg:'',data:{}},如果code=0表示初始化adapter是成功,如果code=-1表示初始化不成功,表示后台接口异常。
# 2.3 setOptions
函数描述:更改adapter实例的公共参数
函数原型:function setOptions (params = {}, callBack)
函数入参:
@param {object} params
@param {Function} callBack
返回结果:返回promise对象
例:
officeSDK.setOptions(openParams, function(error, result){
if (error) {
//设置失败
} else {
//设置成功
}
});
# 2.4 openFile
函数描述:打开文件
函数原型:function openFile (params = {}, callBack)
函数入参:
@param {object} params
{
@param {Boolean} isDialog 是否是弹窗打开
@param {Boolean} isHide 是否隐藏式打开
@param {String} showDialogTitle 弹窗标题
@param {true} noTransFlag 是否需要显示预览(客户端模式的三方插件需要,如:WPS客户端)true:不显示,false:显示
}
@param {Function} callBack 打开文件后返回的回调函数
返回结果:返回promise对象
例:
officeSDK.openFile(openParams, function(error, result){
if (error) {
//打开文件失败
} else {
//打开文件成功
}
});
# 2.5 destory
函数描述:销毁当前adapter中持有的三方实例(包括关闭文档,关闭弹窗)
函数原型:function destory(params = {}, callBack)
函数入参:
@param {object} params (目前无需该参数,传null即可)
@param {Function} callBack 打开文件后返回的回调函数
返回结果:返回promise对象
例:
officeSDK.destory(params, function(error, result){
if (error) {
//销毁弹窗失败
} else {
//销毁弹窗成功
}
});
# 2.6 closeFile
函数描述:关闭文件
函数原型:function closeFile (params = {}, callBack)
函数入参:
@param {object} params
@param {Function} callBack 回调函数
返回结果:返回promise对象
例:
officeSDK.closeFile(openParams, function(error, result){
if (error) {
//关闭文件失败
} else {
//关闭文件成功
}
});
# 2.7 saveFile
函数描述:保存文件
函数原型:function saveFile (params = {}, callBack)
函数入参:
@param {object} params{
@param {string} fileId 文件ID
@param {boolean} isAsync 是否异步保存
@param {boolean} noTransFlag true //wps保存后不触发转换
@param {boolean} isNotCloseDoc true //wps保存后不关闭文档
}
@param {Function} callBack 回调函数
返回结果:返回promise对象
例:
officeSDK.saveFile(openParams, function(error, result){
if (error) {
//保存文件失败
} else {
//保存文件成功
}
});
# 2.8 taohong
函数描述:文档套红
函数原型:function taohong (params = {}, callBack)
函数入参:
@param {object} params{
@param {Array} allBoomark //套红书签对象
{
@param {string} bookmark // 书签名称
@param {string} type // 值类型 ('TEXT': 文本,'IMAGE':图片,'DOCUMENT': 文件)
@param {string} text // 书签值
@param {object} fileInfo // 文件信息(文件类型的书签使用)
@param {object} imgInfo // 图片信息(图片类型的书签使用)
}
@param {string} templateUrl // 模板id
@param {string} templateType // 套红类型('edoc':正文套红-对当前正文进行套红,'script': 文单套红-加载模版文件进行套红)
@param {Object} extParam // 扩展参数
}
@param {Function} callBack 回调函数
返回结果:返回promise对象
# 2.9 isAvailable
函数描述:编辑器是否可用
函数原型:function isAvailable (params = {})
函数入参:
@param {object} params
返回结果:返回布尔对象true/false
# 2.10 isModified
// 文档是否被修改 isModified: function () { },
# 2.11 print
// 打印 print: function () {},
# 2.12 delAnnotations
// 删除文档批注 delAnnotations: function () { },
# 2.13 saveHuaLian
// 保存花脸 saveHuaLian: function () {},
# 2.14 clearTrail
// 清稿 clearTrail: function () {},
# 2.15 bookmarkHighlight
// 高亮、定位跳转到书签 bookmarkHighlight: function () {},
# 2.16 transform
// 流式文件转板式文件(PDF、OFD) transform: function () { },
# 2.17 getBookmarkList
// 获取书签列表 getBookmarkList: function () {},
# 2.18 delBookmarks
// 删除书签 delBookmarks: function () {},
# 2.19 contentLength
// 获取文档大小 contentLength: function () {},
# 2.20 contentLengthAndCreateDate
// 获取文档大小和创建日期 contentLengthAndCreateDate: function () {},
# 2.21 signature
// 签章 signature: function () {},
# 2.22 hasProfessionalSign
// 是否有专业签章 hasProfessionalSign: function () {},
# 2.23 countSignatures
// 获取签章数量 countSignatures: function () {},
# 2.24 download
// 下载正文 download: function () {},
# 2.25 analyzing
// 解析图片 analyzing: function () {},
# 2.26 isEmpty
// 判断正文是否为空 isEmpty: function (params, callback) { },
# 2.27 supportMultiEditing
// 是否支持多人编辑 supportMultiEditing: function () {},
# 2.28 batchSwap
//批量替换书签内容 batchSwap: function () {},
# 2.29 swapWithoutHighlight
//替换书签内容不高亮 swapWithoutHighlight: function () {},
# 2.30 batchDeleteBM
//删除指定书签 batchDeleteBM: function () {},
# 2.31 decryptSeal
// 印章置灰 decryptSeal: function () {},
# 2.32 isClientApp
// 是否为客户端。例如wps加载项 isClientApp: function () {},
# 2.33 isAllowSignature
// 是否有签章功能 isAllowSignature: function () {},
# 2.34 isAllowTransform
// 是否有转版功能 isAllowTransform: function () {},
# 2.35 hide
// 隐藏弹窗 hide: function () {}
# 3.枚举
//mode 的枚举类型 VIEW、EDIT、SIGN
OfficeSDK.ENUM_MODE_TYPE = {
VIEW: 'VIEW', // 预览
EDIT: 'EDIT', // 编辑
SIGN: 'SIGN' // 签章
}
# 4、三方插件使用(TODO)
快速跳转
- 流版签(OfficeSDK)技术说明文档
- 背景&作用
- 适用版本
- 名词解释:
- 1.使用方式
- 2.接口说明
- 2.1初始化参数说明
- 2.2 init
- 2.3 setOptions
- 2.4 openFile
- 2.5 destory
- 2.6 closeFile
- 2.7 saveFile
- 2.8 taohong
- 2.9 isAvailable
- 2.10 isModified
- 2.11 print
- 2.12 delAnnotations
- 2.13 saveHuaLian
- 2.14 clearTrail
- 2.15 bookmarkHighlight
- 2.16 transform
- 2.17 getBookmarkList
- 2.18 delBookmarks
- 2.19 contentLength
- 2.20 contentLengthAndCreateDate
- 2.21 signature
- 2.22 hasProfessionalSign
- 2.23 countSignatures
- 2.24 download
- 2.25 analyzing
- 2.26 isEmpty
- 2.27 supportMultiEditing
- 2.28 batchSwap
- 2.29 swapWithoutHighlight
- 2.30 batchDeleteBM
- 2.31 decryptSeal
- 2.32 isClientApp
- 2.33 isAllowSignature
- 2.34 isAllowTransform
- 2.35 hide
- 3.枚举
- 4、三方插件使用(TODO)