教你DES快速开发

教你DES快速开发

帖子星期四 » 2013年 8月 8日 15:23 星期四

关于DES签章使用分两种
第一种:在客户端机器直接安装,在客户端office上直接使用
这一种使用,使用者直接在客户端机器直接安装DES软件,就会在本机注册DESSeal.dll控件。签章控件安装完成后,它的功能是内嵌在office文档(Word,Excel)中,你可以看到Word里面添加一个“电子印章”的工具栏,只要安装了这个软件,它就会作为Word的一个子功能存在。点击“电子印章”下相应的按钮,实现盖章手写等工作。
签过章的文档中,当前文档签的章,会与当前文档的内容进行绑定,如果当前文档在签章后有改动,章就会自动侦测出来,然后就会在签的章上会有一个大红叉的提示,说明文档在盖章后被修改了。
DES签章还有一些属性的操作,当你把鼠标放到章上,首先就会弹出一个提示框,提示框上会有,签章人,签章时间,签章文档是通过(如果签章后的文档有修改,会提示不通过)。然后鼠标右键,会有一下属性的操作
文档签章 :对office文档进行签章;
检查印章:查看文档中的签章信息。
印章属性:查看印章详细信息,包括盖章人,盖章时间。
证书信息:查看数字证书信息,包括姓名
文档验证:对已经签章的文档进行有效性的校验
印章撤销:删除文档上的印章,且只有盖章人才能删除自己的印章。
签章设置、安全控制:对印章和文档进行有效的保护。
文档脱密:设置文档中带颜色的格式变成灰色,类似于复印件
版本信息:查看电子签章的版本信息。
以上就是关于DES客户端签章使用的具体介绍。
第二种:网页中使用DES签章
网页DES签章,首先关于office文档在网页中显示,是通过weboffice控件,做为一个介质,用于显示office文档。然后通过js调用DES签章控件的接口,来实现签章的操作功能。下面介绍具体的使用。
首先是控件的加载,代码如下
<OBJECT id=DES1 height=0 width=0 style="LEFT: 0px; TOP: 0px"
classid="clsid:E009118F-0E86-494D-B7FF-027F342B45CE" codebase="DESSeal.dll#version=4,2,6,6">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

或者采用引入js的方式
<script src="LoadDESSeal.js"></script>

LoadDESSeal.js里面的内容为
var s = ""
s += "<object id= DES1 height=586 width='100%' style='LEFT: 0px; TOP: 0px' classid='clsid:E009118F-0E86-494D-B7FF-027F342B45CE' codebase=DESSeal.dll#Version=4,2,6,6>"
s +="<param name='_ExtentX' value='6350'><param name='_ExtentY' value='6350'>"
s +="</OBJECT>"
document.write(s)
<OBJECT id=DES1 height=0 width=0 style="LEFT: 0px; TOP: 0px"
classid="clsid:E009118F-0E86-494D-B7FF-027F342B45CE" codebase=DESSeal.dll#Version=4,2,5,8>
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0"></OBJECT
>
主要参数说明:
id 控件在网页的别名,可以通过别名调用控件的方法、属性
width 控件的宽度,设为0隐藏"。
height 控件的高度,设为0隐藏
codebase 设置控件自动下载的路径,用户如果没有安装控件,系统会自动访问codebase的路径下载控件;“#Version”后的是控件的版本,如果用户当前的软件版本低于“#Version”后面的版本,系统也会自动下载最新的控件

以上就是控件的加载的两种方法以及主要参数的说明,控件加载完就是怎样开始编写代码调用了
首先是触发初始化方法HRESULT NotifyCtrlReady(),该方法是当控件准备完毕后触发,一般在这个事件中完成初始化的操作。代码如下
<SCRIPT LANGUAGE=javascript FOR=WebOffice1 EVENT=NotifyCtrlReady>
WebOffice1_NotifyCtrlReady()//需要执行的初始化方法
</SCRIPT>

通常在这个方法里面调用EnableOfficeCtrl(1)来初始化监控,代码如下
function WebOffice1_NotifyCtrlReady()
{
document.all.DES1. EnableOfficeCtrl(1);
}

执行初始化方法,注册控件进入监控模式long EnableOfficeCtrl(long lEnabled);进入或者退出监控状态,这个相当于初始化/逆初始化函数,必须首先和在结束时调用,在NotifyCtrlReady里初始化,在页面Unload时逆初始化,lEnabled: 0-退出监控,1-进入监控,可多次调用。
进入监控状态下之后,在事件函数中,通过调用函数事件方法,添加通知事件处理函数,
<SCRIPT LANGUAGE=javascript FOR=DES1 EVENT=NotifyBeforeAction(lType,lObjType,strName,strValue,strAuthor,strMachine) >
< document.all.shijian.value=document.all.shijian.value+"\n事件名NotifyBeforeAction,控件创建对象前触发,最近触发时间 "+GetNowDateTime();
DES1_NotifyBeforeAction(lType,lObjType,strName,strValue,strAuthor,strMachine);
</SCRIPT>

<SCRIPT LANGUAGE=javascript FOR=DES1 EVENT=NotifyAfterAction(lObjType,strName,strValue,strAuthor,strMachine) >
document.all.shijian.value=document.all.shijian.value+"\n事件名NotifyAfterAction,控件创建对象后触发,最近触发时间 "+GetNowDateTime();
</SCRIPT>

<SCRIPT LANGUAGE=javascript FOR=DES1 EVENT=NotifyDocEvent(strEventName) >
document.all.shijian.value=document.all.shijian.value+"\n事件名NotifyDocEvent,捕获office事件,最近触发时间 "+GetNowDateTime();
DES1_NotifyDocEvent(strEventName);
</SCRIPT>

<SCRIPT LANGUAGE=javascript FOR=DES1 EVENT=NotifyUserListChanged() >
document.all.shijian.value=document.all.shijian.value+"\n事件名NotifyUserListChanged,用户列表改变后触发,最近触发时间 "+GetNowDateTime();
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=DES1 EVENT=NotifySealListChanged() >
document.all.shijian.value=document.all.shijian.value+"\n事件名NotifySealListChanged,印章列表改变后触发,最近触发时间 "+GetNowDateTime();
</SCRIPT>

然后咱们实现一个盖章,手写的功能,这时咱们调用的方法是long DoAction(long lActionType);该方法是在当前活动文档中执行签章/手写等菜单动作
lActionType是需要执行操作的动作类型
DoAction(1) 代表的是盖章操作,
DoAction(2) 代表的是手写操作,下面是具体的代码
<SCRIPT LANGUAGE=javascript>
function addSeal_onclick()
{
document.all.DES1.DoAction(1);
}
</SCRIPT>
<INPUT id=addSeal type=button value=盖章 name=addSeal LANGUAGE=javascript
onclick="return addSeal_onclick()">

Unload时触发逆初始化方法
执行逆初始化方法,注册控件退出监控模式,代码如下
function DES1_Unload(){
document.all.DES1. EnableOfficeCtrl(0);
}

以上就是关于DES控件的使用,下面是关于上面例子用到的接口的介绍,
NotifyDocEvent
原 型: HRESULT NotifyDocEvent(BSTR strEventName);
说 明:捕获部分Word/Excel/Wps事件。
参数:strEventNameWord/Excel的事件名,可能是以下的数值
DocumentChange
DocumentOpened
DocumentBeforeClose(暂未支持)
DocumentBeforePrint
DocumentBeforeSave
NotifyBeforeAction
原 型: HRESULT NotifyBeforeAction(long lType, long lObjType, BSTR strName, BSTR strValue, BSTR strAuthor, BSTR strMachine);
参 数:
long lType: Action的类型,可为下列值之一:
Action_CreateObj = 1,
Action_DeleteObj = 2
long lObjType: 待创建的对象类型,可为下列值之一:
OBJ_TYPE_SEAL = 1,
OBJ_TYPE_HANDWRITE = 2,
OBJ_TYPE_HANDWRITEPOP = 3,
OBJ_TYPE_TEXTOBJ = 3,
BSTR strName:对象名称,这里为空。
BSTR strValue:对象的值,这里为空。
BSTR strAuthor:创建者,为证书编号。
BSTR strMachine:本机名称(为MAC地址)
NotifyAfterAction
原 型: HRESULT NotifyAfterAction(long lObjType, BSTR strName, BSTR strValue, BSTR strAuthor, BSTR strMachine);
参 数:
long lObjType: 已创建的对象类型,可为下列值之一:
OBJ_TYPE_SEAL = 1,
OBJ_TYPE_HANDWRITE = 2,
OBJ_TYPE_HANDWRITEPOP = 3,
OBJ_TYPE_TEXTOBJ = 3,
BSTR strName:对象名称,这里为内部自动生成的对象名称,可用于以后操作。
BSTR strValue:对象的值,格式为“页面序号;印章ID;印章名称”。
BSTR strAuthor:创建者名称,为证书Subject或者Office本机注册名称。
BSTR strMachine:本机名称(为MAC地址)
NotifyUserListChanged
原 型: HRESULT NotifyUserListChanged();
说 明: 可以通过GetNextUser遍历所有用户
NotifySealListChanged
原 型: HRESULT NotifySealListChanged();
说 明: 可以通过GetNextSeal遍历所有用户
星期四
 
帖子: 4
注册: 2013年 8月 5日 22:55 星期一

回到 DES快速开发指南

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客

cron