天印签章系统技术白皮书V20.docx
《天印签章系统技术白皮书V20.docx》由会员分享,可在线阅读,更多相关《天印签章系统技术白皮书V20.docx(39页珍藏版)》请在冰豆网上搜索。
天印签章系统技术白皮书V20
-标准化文件发布号:
(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
天印签章系统技术白皮书V2.0
天印签章系统PDF版
技术白皮书
Version2.0.1.0
杭州天谷信息科技有限公司
2014年3月
保密声明
本文档包含杭州天谷信息科技有限公司的专用商业信息和保密信息。
本文档保密时间为20年。
接受方同意维护本文档所提供信息的保密性,承诺不对其进行复制,或向其他公司或个人公开此信息。
对于以下三种信息,接受方可不向天谷公司承担保密责任:
1)可以通过其他渠道公开获得的信息;
2)天谷科技承诺可公开的信息;
3)已超过保密时间要求的信息。
文档修改记录
序号
修改人
修改时间
内容说明
1
蒋淑红
2013-7-18
创建文档
2
蒋淑红
2013-9-30
更新版本V2.0.0.4
3
蒋淑红
2013-10-31
更新版本V2.0.0.5
4
蒋淑红
2013-11-20
更新版本V2.0.0.6
5
蒋淑红
2013-12-11
更新版本V2.0.0.7
6
蒋淑红
2014-3-28
更新版本V2.0.1.0
概述
1.产品研发背景
在现实社会中,我们在办事过程中通过签字盖章的方式来确认办事人员的身份,并作为对文档确认的凭据。
这种物理上签字、盖章防止假冒的有效性基础包括笔迹和法律保障。
然而在网络中,办事的过程中双方是不见面的,如何解决身份认证和行为确认的问题呢?
2005年4月1日,《中华人民共和国电子签名法》正式生效,从法律层面上确认了“电子签名”具有和手写签名相同的法律效力。
而目前最为成熟的电子签名技术是“数字签名技术”。
天印电子签章产品正是在以上需求及法律背景下研发的一款产品,可应用于所有网络应用,解决在网络办事过程中的签字、盖章等身份识别和行为确认的问题。
在网络办事过程中应用最广的就是版式文件了,即PDF,因此,研发天印签章系统PDF版应运而生。
2.产品特点
产品成熟:
2004年即开始研发,40多万用户使用;
适应性强:
支持所有IE内核的浏览器;
功能丰富:
单页、多页、关键字、批量、坐标签章,骑缝章,数字水印,时间戳……
可开发性强:
大量二次开发接口,满足绝大多数应用场景;
可靠性强:
支持双机热备、智能选择服务器。
3.产品组成
天印签章系统PDF版包含天印签章PDF阅读器和天印签章PDF中间件两个组件。
天印签章PDF阅读器是运行于客户机上的一个可执行程序,是一个结合了签章功能的成熟PDF阅读器。
天印签章PDF中间件提供了ocx和dll接口,可以供Web网页或其他应用程序灵活调用。
4.产品体系架构
中间件接口说明
5.中间件接口概述
1.1Plugin接口属性
1)CurrentPDFPath
特性:
只读
类型:
字符串型
功能:
获取当前打开文档的本地路径
调用:
varpdfPath=plugin.CurrentPDFPath;
2)CurrentCachePath
特性:
只读
类型:
字符串型
功能:
获取当前打开文档的缓存路径
调用:
varpdfPath=plugin.CurrentCachePath;
说明:
为了保证PDF文件操作的效率,打开本地文件和网络PDF文件时,均会将文件保存到缓存路径中。
3)Version
特性:
只读
类型:
整数型
功能:
获取产品版本号
调用:
varversion=plugin.Version;
4)LastErrorCode
特性:
只读
类型:
整数型
功能:
获取最后的错误代码
调用:
varerrorCode=plugin.LastErrorCode;
5)ErrorCodeInner
特性:
只读
类型:
整数型
功能:
获取内部错误代码
调用:
varerrorCode=plugin.ErrorCodeInner;
6)mergeStatus
特性:
只读
类型:
整数型
功能:
获取当前合并结果码(0:
未执行合并,1:
合并成功,2:
合并失败)
调用:
varmergeStatus=plugin.mergeStatus;
1.2Plugin接口事件
1)OnLoadUrlFinish
参数:
lType整数型//操作类型
lErrCode整数型//错误代码(成功:
0,其他为错误码)
激活:
成功打开网络PDF文件时触发。
使用示例:
plugin.attachEvent("OnLoadUrlFinish",jsOnLoadUrlFinish);
……
functionjsOnLoadUrlFinish(lType,lErrCode){
if(lErrCode==0){
alert(“文件装载成功”);
}else{
alert("文件装载失败,错误代码:
"+lErrCode);
}
}
2)OnSignFinish
参数:
lType整数型//操作类型
lErrCode整数型//错误代码(成功:
0,其他为错误码)
激活:
签章完成时触发。
使用案例:
plugin.attachEvent("OnSignFinish",jsOnSignFinish);
……
functionjsOnSignFinish(lType,lErrCode){
if(lErrCode==0){
alert(“签章成功”);
}else{
alert("签章失败,错误代码:
"+lErrCode);
}
}
3)OnUploadFinish
参数:
lType整数型//操作类型
lErrCode整数型//错误代码(成功:
0,其他为错误码)
激活:
文件上传完成时触发。
使用案例:
plugin.attachEvent("OnUploadFinish",jsOnUploadFinish);
……
functionjsOnUploadFinish(lType,lErrCode){
if(lErrCode==0){
alert(“上传成功”);
}else{
alert("上传失败,错误代码:
"+lErrCode);
}
}
4)OnBatchSealSignFinish
参数:
okCount整数型//成功签章个数
failCount整数型//失败签章个数
okList字符串型//成功签章文件标识列表,格式:
fileId1,fileId2,fileId3…
激活:
多个文件批量签章完成时触发。
使用案例:
plugin.attachEvent("OnBatchSealSignFinish",jsOnBatchSealSignFinish);
……
functionjsOnBatchSealSignFinish(okCount,failCount,okList){
alert(“签章成功”+okCount+“个文件,失败”+failCount+“个文件,签章成功的文件有:
”+okList);
}
5)OnConvertFileToPdfFinish
参数:
lType整数型//操作类型
lErrCode整数型//错误代码(成功:
0,其他为错误码)
激活:
word文件转换为pdf完成后触发。
使用案例:
plugin.attachEvent("OnConvertFileToPdfFinish",jsOnConvertFileToPdfFinish);
……
functionjsOnConvertFileToPdfFinish(lType,lErrCode){
if(lErrCode==0){
alert(“转换成功”);
}else{
alert("转换失败,错误代码:
"+lErrCode);
}
}
6)OnSignatureDelete
参数:
lType整数型//操作类型
lErrCode整数型//错误代码(成功:
0,其他为错误码)
激活:
天印签章PDF中间件中删除电子签章时触发。
使用案例:
plugin.attachEvent("OnSignatureDeleteFinish",jsOnSignatureDeleteFinish);
……
functionjsOnSignatureDeleteFinish(lType,lErrCode){
if(lErrCode==0){
alert(“删除成功”);
}else{
alert("删除失败,错误代码:
"+lErrCode);
}
}
1.3Plugin接口函数
1)LoadPdf
功能说明:
在天印签章PDF中间件中打开本地PDF文件,打开文档同时过滤文档中指定关键字,将关键字出现的所有位置渲染为***,从而保护文档敏感信息。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
bstrKeyWords字符串型//过滤关键字
输出参数:
触发OnLoadUrlFinish事件
特别说明:
打开本地PDF文件的同时可以过滤文档中的关键字,若不需要过滤,参数bstrKeyWords请设置为空字符串“”。
调用示例:
plugin.LoadPdf(“c:
\\123\abc.pdf”,“”);
2)LoadUrlPDF
功能说明:
在天印签章PDF中间件中打开网络PDF文件,打开文档同时过滤文档中指定关键字,将关键字出现的所有位置渲染为***,从而保护文档敏感信息。
输入参数:
bstrUrl字符串型//PDF文件URL地址
bstrKeyWords字符串型//过滤关键字
输出参数:
触发OnLoadUrlFinish事件
特别说明:
打开网络PDF文件的同时可以过滤文档中的关键字,若不需要过滤,参数bstrKeyWords请设置为空字符串“”。
调用示例:
plugin.LoadUrlPdf(““”);
3)SetRemoteServer
功能说明:
设置天印签章PDF中间件连接的签章服务器地址。
输入参数:
serverHost字符串型//签章服务器ip地址
serverPort整数型//签章服务器端口
输出参数:
无
调用示例:
plugin.SetRemoteServer(“192.168.0.1”,80);
4)DisplayToolButton
功能说明:
控制天印签章PDF中间件工具栏上的按钮,显示或隐藏按钮。
输入参数:
lID整数型//工具栏按钮索引
lFlag整数型//控制指令(0:
隐藏,1:
显示)
输出参数:
无
特别说明:
各个按钮的索引号请参照附件一工具栏按钮标识索引表
调用示例:
plugin.DisplayToolButton(402,0);
5)EnableToolButton
功能说明:
控制天印签章PDF中间件工具栏上按钮的可用性,不可用的按钮将变灰。
输入参数:
lID整数型//工具栏按钮索引
lFlag整数型//控制指令(0:
不可用,1:
可用)
输出参数:
无
特别说明:
各个按钮的索引号请参照附件一
调用示例:
plugin.EnableToolButton(402,0);
6)ControlToolBar
功能说明:
控制天印签章PDF中间件的模式,包含阅读模式和签章模式两种,阅读模式时工具栏中签章相关按钮将不显示。
输入参数:
lControlType整数型//模式类型(1:
阅读模式,2:
签章模式)
输出参数:
无
调用示例:
plugin.ControlToolBar
(1);
7)GetCurrentPageNum
功能说明:
获取天印签章PDF中间件当前打开的PDF文件的当前页码。
输入参数:
无
输出参数:
plPageNum整数型//PDF文件当前页码
调用示例:
varplPageNum=plugin.GetCurrentPageNum();
8)GotoPage
功能说明:
在天印签章PDF中间件当前打开的PDF文件中跳转至指定页。
输入参数:
pageNum整数型//跳转的目标页码
输出参数:
无
调用示例:
plugin.GotoPage
(1);
9)SavePdfFile
功能说明:
对天印签章PDF中间件当前打开的PDF文件执行保存操作。
输入参数:
无
输出参数:
pSaved整数型//保存结果(0:
成功,1:
失败)
调用示例:
varpSaved=plugin.SavePdfFile();
10)CloseCurrentDoc
功能说明:
对天印签章PDF中间件当前打开的PDF文件执行关闭操作。
输入参数:
无
输出参数:
无
调用示例:
plugin.CloseCurrentDoc();
11)ControlPDF
功能说明:
控制天印签章PDF中间件的操作,使用指令代码执行相应的操作。
输入参数:
lOpt整数型//指令代码
输出参数:
无
特别说明:
操作指令代码请参照附件二中间件操作指令表
调用示例:
plugin.ControlPDF
(1);
12)AddBookmark
功能说明:
在天印签章PDF中间件当前打开的PDF文件中增加书签。
输入参数:
lPage整数型//页码
bstrFavName字符串型//书签名
输出参数:
无
调用示例:
plugin.AddBookmark(1,“test”);
13)GotoBookmark
功能说明:
在天印签章PDF中间件当前打开的PDF文件中跳转至书签。
输入参数:
bstrFavName字符串型//书签名
输出参数:
无
调用示例:
plugin.GotoBookmark(“test”);
14)DisplayBookmark
功能说明:
控制天印签章PDF中间件书签栏的显示状态,显示或隐藏。
输入参数:
lFlag整数型//显示状态(0:
隐藏,1:
显示)
输出参数:
无
调用示例:
plugin.DisplayBookmark
(1);
15)CheckPDFIsSignd
功能说明:
检查PDF文件是否签过章。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
输出参数:
psSigned整数型//PDF文件签章状态(0:
未签章,1:
已签章)
调用示例:
varpsSigned=plugin.CheckPDFIsSignd(“c:
\\123\abc.pdf”);
16)CheckSealNum
功能说明:
获取PDF文件中签章的数量。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
输出参数:
plSealNum整数型//PDF文件签章数量
调用示例:
varplSealNum=plugin.CheckSealNum(“c:
\\123\abc.pdf”);
17)CheckPageNum
功能说明:
获取PDF文件总页数。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
输出参数:
plPageNum整数型//PDF文件页数
调用示例:
varplPageNum=plugin.CheckPageNum(“c:
\\123\abc.pdf”);
18)VerifyPDF
功能说明:
验证PDF文件中所有签章,检查文件的有效性。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
输出参数:
psSigned整数型//PDF文件签章验证结果(0:
验证通过,-1:
验证失败,1:
未签章,2:
异常)
特别说明:
所谓验证PDF文件是指检查PDF文件当前内容与电子签章时的文件内容是否一致,若一致表示文件未被修改过,文档有效,否则视为文档无效,验证不通过。
调用示例:
varpsSigned=plugin.VerifyPDF(“c:
\\123\abc.pdf”);
19)Sign
功能说明:
使用插在电脑上的USBKEY数字证书在PDF文件指定位置进行电子签章,证书过滤采用P11。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
lPage整数型//签章位置所在页码
lX整数型//签章位置X坐标
lY整数型//签章位置Y坐标
lSealIdx整数型//签章对应的印章索引
输出参数:
触发OnSignFinish事件
特别说明:
所有参数均为必填项,签章位置坐标原点为PDF文件的左下角。
每次签章都需要选择对应的印章图片,第一个印章对应的索引值为0,依次递增。
在签章过程中,只需要输入USBKEY证书口令就可以完成签章操作。
调用示例:
plugin.Sign(“c:
\\123\abc.pdf”,1,100,100,0);
20)SilenceSign
功能说明:
使用本地PFX证书在本地PDF文件指定位置进行电子签章。
输入参数:
bstrFilePath字符串型//PDF文件本地路径
pfxFilePath字符串型//PFX证书文件本地路径
password字符串型//PFX证书文件密码
imagePath字符串型//印章图片文件本地路径
lPage整数型//签章位置所在页码
lX整数型//签章位置X坐标
lY整数型//签章位置Y坐标
width整数型//印章图片显示宽度(宽高同比)
输出参数:
触发OnSignFinish事件
特别说明:
所有参数均为必填项,签章位置坐标原点为PDF文件的左下角。
在签章过程中,用户无需执行任何操作。
调用示例:
plugin.Sign(“c:
\\123\abc.pdf”,1,100,100,0);
21)SignMu
功能说明:
对网络上多个PDF文件进行批量签章,并将签章后的文档上传。
输入参数:
bstrContent字符串型//XML格式字符串,具体格式如下:
第一个PDF文件URL下载地址
签章位置X轴坐标,Y轴坐标,页数
上传附件参数,格式:
key=value&key2=value2
第一个PDF文件上传地址
第二个PDF文件URL下载地址
签章位置X轴坐标,Y轴坐标,页数
上传附件参数,格式:
key=value&key2=value2
第二个PDF文件上传地址
输出参数:
触发OnSignFinish事件
特别说明:
在签章过程中,用户需要选择签章证书和印章。
调用示例:
plugin.SignMu(“/upload.action”);
22)BatchSealSign
功能说明:
对本地多个PDF文件进行批量签章。
输入参数:
pwszFileContents字符串型//XML格式字符串,具体格式如下:
签章位置设定标识(0:
接口设定,参照coordinate节点;1:
显示位置设置对话框,由用户自己设置)
第一个签章PDF文件本地路径
签章位置X轴坐标,Y轴坐标,页数
文件标识,应用内部标识
第二个签章PDF文件本地路径
签章位置X轴坐标,Y轴坐标,页数
文件标识,应用内部标识
输出参数:
触发OnBatchSealSignFinish事件
特别说明:
在签章过程中,用户需要选择签章证书和印章。
调用示例:
plugin.BatchSealSign(“0c:
\\123\abc.pdf200,200,11”);
23)KeyWordSign
功能说明:
对本地PDF文件进行关键字签章。
输入参数:
bstrPDFPath字符串型//PDF文件本地路径
bstrKeyword字符串型//关键字
lSealIdx整数型//签章对应的印章索引
输出参数:
触发OnSignFinish事件
特别说明:
所谓关键字签章在文档中所有该项关键字所在的位置显示印章,在签章过程中,需要用户选择证书。
每次签章都需要选择对应的印章图片,第一个印章对应的索引值为0,依次递增。
调用示例:
plugin.KeywordSign(“c:
\\123\abc.pdf”,“test”,0);
24)KeywordSignSlicence
功能说明:
以静默方式对本地PDF文件进行关键字签章。
输入参数:
bstrPDFPath字符串型//PDF文件本地路径
bstrKeyword字符串型//关键字
lSealIdx整数型//签章对应的印章索引
输出参数:
lResult整数型//签章结果,0:
成功,1:
失败
特别说明:
以静默方式执行,签章完成后不触发事件,直接返回结果。
调用示例:
plugin.KeywordSignSlicence(“c:
\\123\abc.pdf”,“test”,0);
25)uploadSignedFile
功能说明:
上传PDF文件。
输入参数:
uploadUrl字符串型//PDF文件上传地址
uploadFil