OA办公都离不在一个在线的Office编辑功能,在政府的办公系统中,在线的Office文档编辑及审批功能是必不可少的,微软目前提供了一个dsoframer.ocx控件可以实现这个功能,不过这个控件并没有较好提供完善的升级服务,所以对Office2007的支持并不好,而国内有不少公司或开发人员却基于此开发了不少的功能,不过大部分都需要收费,北京却有一家点聚的公司开发了WebOffice在控件,并且提供免费升级服务,这让OA开发用户多了一种新的选择。
出于此免费的方案,Joffice有其中一个方案是基于它来集成在线的文档编辑功能,而电子签章可以根据用户的需求与该公司进行购买集成,以下为Joffice集成的JOffice控件其中一个界面,支持保留痕迹,清除痕迹。
代码如下:
/**
* @author csx
* @description 公文模板在线显示及编辑窗口
* @company 广州宏天软件有限公司
* @param {} docPath
* @param {} readOnly
*/
var OfficeTemplateView=function(docPath,readOnly,callback){
this.docPath=docPath;
this.readOnly=readOnly==null?false:readOnly;
var objHtml = "<object id='WebOfficeObj' height='100%' width='100%' style='LEFT: 0px; TOP: 0px' classid='clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5' codebase='"+__ctxPath+"/js/core/weboffice/HWPostil_V3074.cab#V6,0,4,2'>";
objHtml+="<param name='TitlebarColor' value='7898C2'/>";
objHtml +="</object>";
//文件保存在服务器端的路径
var win=new Ext.Window({
title:'公文模板详细信息',
height:500,
width:700,
maximizable:true,
html:objHtml
});
//是否只读
if(!this.readOnly){
win.buttonAlign='center';
win.buttons=[
{
iconCls:'btn-save',
text:'保存',
handler:function(){
var url=__fullPath+"/file-upload";
document.all.WebOfficeObj.HttpInit();
document.all.WebOfficeObj.HttpAddPostString('file_cat', 'archive');
//overwrite file path
document.all.WebOfficeObj.HttpAddPostString('file_path', docPath);
document.all.WebOfficeObj.HttpAddPostCurrFile("AipFile ","");
// 提交上传文件
returnValue = document.all.WebOfficeObj.HttpPost(url);
var obj;
eval('obj='+returnValue+";");
if(obj.success){
Ext.ux.Toast.msg('操作信息','已经成功保存至服务器!');
if(callback!=null){
callback.call(this,obj.fileId,obj.filePath);
}
win.close();
}else{
Ext.ux.Toast.msg('操作信息','操作出错,请联系管理员!');
}
}//end of handler
},
{
iconCls:'btn-cancel',
text:'关闭',
handler:function(){
win.close();
}
},
{
text:'保留修改痕迹',
handler:function(){
document.all.WebOfficeObj.SetTrackRevisions(1);
document.all.WebOfficeObj.SetCurrUserName(curUserInfo.fullname);
}
},
{
text:'取消保留痕迹',
handler:function(){
document.all.WebOfficeObj.SetTrackRevisions(0);
}
},
{
text:'清除痕迹',
handler:function(){
document.all.WebOfficeObj.SetTrackRevisions(4);
}
}
];
}
win.show();
//隐藏保存与返回的按钮
//document.all.WebOfficeObj.HideMenuItem(0x04 + 0x2000);
document.all.WebOfficeObj.ShowToolBar=false;
var fullDocPath=''
if(this.docPath!=null && this.docPath!=''){
fullDocPath=__fullPath+'/attachFiles/' + this.docPath;
}
document.all.WebOfficeObj.LoadOriginalFile(fullDocPath,'doc');
//一定需要加上这个控制,保证关闭窗口后,office实例也需要关闭
win.on('close',function(){
try{
document.all.WebOfficeObj.Close();
}catch(ex){
}
});
//当窗口关闭时也需要做同样的操作
window.onUnload=function(){
try{
document.all.WebOfficeObj.Close();
}catch(ex){
}
}
};