使用iWebOffice实现电子签章

摘要:随着信息化的发展电子签章已经越来越多的被用到很多OA系统中,今天就来看一下如何使用iWebOffice来实现电子签章功能。

内容:

1.iWebOffice2003的基本原理

2.使用iWebOffice2003实现电子签章

一、iWebOffice2003的基本原理

在开始今天的主题之前先简单的说一下iWebOffice的原理。iWebOffice控件由两部分组成:一个是用于集成在页面上的iWebOffice2003.ocx文件,另一个是运行在后台服务器上的iMsgServer2000.dll文件。前者就是大家所熟知的ActiveX插件,当然要使用它在客户端必须安装此插件,后者是用于配合前者的请求进行通信,事实上控件工作的原来正是前后台通信和处理的过程。iWebOffice2003.ocx集成在页面上,通过js脚本调用,用户文档的编辑以及传递消息到服务器;iMsgServer2000.dll在服务器端运行,用于解析iWebOffice2003.ocx控件发过来的信息包,以及将服务器上处理的结果反馈给客户端iWebOffice2003.ocx

iWebOfficePrinciple

首先来看前端的代码,可以说同其他ActiveX几乎完全一样。classid是固定的,是控件的注册id,这也是所有com组件必须拥有的;codebase由两部分组成#version之前的是控件的下载地址,后面是控件版本号,这两者当然务必要写正确,否则会造成控件不能正常下载、显示和使用。

前端页面代码:

<OBJECT id="CWebOffice" width="100%" height="100%" classid="clsid:23739A7E-5741-4D1C-88D5-D50B18F7C347" codebase=" iWebOffice2003.ocx#version=6,0,0,4 " ></OBJECT>

如果classid和version没有设置错的话运行会显示控件(前提是客户端安装了iWebOffice插件),当然此时还不能打开文档,因为前端还没有js调用。为了方便调用,这里将js操作部分加以封装(注意封装部分用到了Ext面向对象):

/*
    Author:KenshinCui
    Date:2011.11.16
    Description:weboffice operate class.
*/
Ext.useShims=true;
Ext.namespace("Cmj.Web.ExtExtend");
Cmj.Web.ExtExtend.WebOffice=Ext.extend(Ext.util.Observable,{
    constructor:function(config){
//        this.addEvents("beforeopen");
//        this.addEvents("open");
//        this.addEvents("beforeprint");
//        this.addEvents("print");
//        this.addEvents("beforeopen");
//        this.addEvents("open");
//        this.addEvents("beforeopen");
//        this.addEvents("open");
        this.listeners=config.listeners;
        Cmj.Web.ExtExtend.WebOffice.superclass.constructor.call(this,config);
 
        this.objectID=config.objectID;//客户端对象id
        this.webUrl=config.webUrl;//weboffice 的服務器端操作url
        this.fileName=config.fileName;//文件名称(不包含完整路径并且后缀可有可无,如果没有后缀的话则必须配置fileType属性)
        if(config.fileType!=void 0){
            this.fileType=config.fileType;
        }else{
            this.fileType="";
        }
        this.webOffice=Ext.getDom(this.objectID);
    },
    getObject:function(){
        return this.webOffice;
    },
    load:function(){
        WebOffice=this.webOffice;
        try{
            WebOffice.WebUrl=this.webUrl;
            WebOffice.RecordID="cid";
            WebOffice.Template="";
            WebOffice.FileName=this.fileName;
            WebOffice.FileType=this.fileType;
            WebOffice.EditType="1";
            WebOffice.UserName="SYSTEM";
 
            WebOffice.WebOpen();    //打开该文档    
            window.status=WebOffice.Status;
        }catch(e){
            Ext.Msg.alert("系统提示","打开文档过程中发生错误,错误信息:"+e.message);
        }
    },
    showMenu:function(bool){
        try{
            this.webOffice.ShowMenu=bool?"1":"0";
        }catch(e){
            Ext.Msg.alert("系统提示","设置菜单显示状态时发生错误,错误信息:"+e.message);
        }
    },
    addMenus:function(menuArray){
        try
        {
            var menu=Ext.getDom('menuEventScript');
            for(var i=1;i<=menuArray.length;++i){
                if(menuArray[i-1]=="save"){
                    this.webOffice.AppendMenu(i,"保存");
                    menu.text+="if(Index=="+i+"){Ext.getDom('CWebOffice').WebSave();}";   
                }else if(menuArray[i-1]=="saveAs"){
                    this.webOffice.AppendMenu(i,"另存为");
                    menu.text+="if(Index=="+i+"){Ext.getDom('CWebOffice').WebSaveLocal();}";   
                }else if(menuArray[i-1]=="print"){
                    this.webOffice.AppendMenu(i,"打印");
                    menu.text+="if(Index=="+i+"){Ext.getDom('CWebOffice').WebOpenPrint();}";   
                }else if(menuArray[i-1]=="signature"){
                    this.webOffice.AppendMenu(i,"电子签章");
                    menu.text+="if(Index=="+i+"){Ext.getDom('CWebOffice').WebOpenSignature();}";   
                }
            }
        }catch(e){
            Ext.Msg.alert("系统提示","创建菜单过程中发生错误,错误信息:"+e.message);
        }
    },
    save:function(){//保存到服务器
        try{
            this.webOffice.WebSave();
        }catch(e){
            Ext.Msg.alert("系统提示","文档保存时发生错误,错误信息:"+e.message);
        }
    },
    saveAs:function(){//另存到客户端
        try{
            this.webOffice.WebSaveLocal();
        }catch(e){
            Ext.Msg.alert("系统提示","文档另存时发生错误,错误信息:"+e.message);
        }
    },
    print:function(){
        try{
            this.webOffice.WebOpenPrint();
        }catch(e){
            Ext.Msg.alert("系统提示","文档打印时发生错误,错误信息:"+e.message);
        }
    },
    signature:function(type){//打开电子签章操作窗口
        try{
            if(arguments.length>0){
                this.webOffice.WebOpenSignature(type);
            }else{
                this.webOffice.WebOpenSignature();
            }
        }catch(e){
            Ext.Msg.alert("系统提示","打开电子签章窗口时发生错误,错误信息:"+e.message);
        }
    }
     
});

这里继承了Ext的Obse

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值