J.Office另一种在线Office编辑器整合

我们知道,在线Office插件,国内有几家公司做得不错,老的厂商有江西金格,重庆软航,北京点聚等。

目前根据客户的需要,J.office提供重庆软航的在线Office编辑的集成解决方案,购买J.Office的客户可以自己购买,也可以由宏天帮助采购。

 

J.Office 2.0提供了两种方式,用户只需要配置,则可以同时支持重庆软航或北京点聚的,以下为J.Office提供的软航的Office插件的整合代码示例方式。

 

 

Java代码
  1. /**  
  2.  * 集成软航Office在线编辑控件  
  3.  * @param {} conf  
  4.  * @return {}  
  5.  */  
  6. NtkOfficePanel=function(conf){   
  7.     var fileId=conf.fileId?conf.fileId:'';   
  8.     var officeObj = document.createElement('object');   
  9.     officeObj.width = "100%";   
  10.     officeObj.height = "100%";   
  11.     officeObj.classid= "clsid:A39F1330-3322-4a1d-9BF0-0BA2BB90E970";    
  12.     officeObj.codebase = __ctxPath+'/js/core/ntkoffice/OfficeControl.cab';//weboffice_V6.0.4.6.cab#V6,0,4,6   
  13.        
  14.     var panelConf={border:false,layout:'fit'};   
  15.        
  16.     /**  
  17.      * 保存文档  
  18.      */  
  19.     var saveFn=function(config){   
  20.         fileId=config.fileId?config.fileId:'';   
  21.         var result= officeObj.SaveToURL(__fullPath + '/file-upload',"EDITFILE","fileId="+fileId,config.docName+'.doc',0);   
  22.         var obj=Ext.util.JSON.decode(result);   
  23.         if(obj&&obj.success){   
  24.             fileId=obj.fileId;   
  25.         }else{   
  26.             obj={success:false};   
  27.         }   
  28.         return obj;   
  29.     };   
  30.        
  31.     if(conf.showToolbar){   
  32.         panelConf.tbar=new Ext.Toolbar({   
  33.             items:[   
  34.                 {   
  35.                     text : '保留修改痕迹',   
  36.                     iconCls : 'btn-archive-save-trace',   
  37.                     handler : function() {   
  38.                         officeObj.ActiveDocument.Application.UserName=curUserInfo.fullname;   
  39.                         officeObj.ActiveDocument.TrackRevisions=true;   
  40.                     }   
  41.                 }, '-', {   
  42.                     text : '取消保留痕迹',   
  43.                     iconCls : 'btn-archive-cancel-trace',   
  44.                     handler : function() {   
  45.                         officeObj.ActiveDocument.TrackRevisions=false;   
  46.                     }   
  47.                 }, '-',{   
  48.                     text : '清除痕迹',   
  49.                     iconCls : 'btn-archive-eraser',   
  50.                     handler : function() {   
  51.                         officeObj.ActiveDocument.AcceptAllRevisions();   
  52.                     }   
  53.                 },'-',{   
  54.                     text:'保存至服务器',   
  55.                     iconCls:'btn-save',   
  56.                     scope:this,   
  57.                     handler:function(){   
  58.                         Ext.MessageBox.prompt('输入提示','请输入文档的名称',function(btn,text){   
  59.                             if(btn!='ok') return;   
  60.                             if(text=='')text='未命名';   
  61.                             var result=saveFn({docName:text});   
  62.                             if(result.success){   
  63.                                 Ext.ux.Toast.msg('操作信息','成功文档保存~');   
  64.                             }else{   
  65.                                 Ext.ux.Toast.msg('操作信息','保存文档失败!');   
  66.                             }   
  67.                         });   
  68.                            
  69.                     }   
  70.                 }   
  71.             ]   
  72.         });   
  73.     }   
  74.        
  75.     Ext.applyIf(panelConf,conf);   
  76.   
  77.     var panel=new Ext.Panel(panelConf);   
  78.     panel.on('afterrender',function(){   
  79.             panel.body.appendChild(officeObj);   
  80.             panel.doLayout();   
  81.             if(fileId!=''){   
  82.                 officeObj.OpenFromURL(__ctxPath+'/file-download?fileId='+fileId);   
  83.             }else{   
  84.                 officeObj.CreateNew("Word.Document");   
  85.             }              
  86.     });   
  87.   
  88.     //对外公共方法   
  89.     return {   
  90.         panel:panel,   
  91.         officeObj:officeObj,   
  92.         openDoc:function(inFileId){   
  93.             fileId=inFileId;   
  94.             officeObj.OpenFromURL(__ctxPath+'/file-download?fileId='+fileId);   
  95.         },   
  96.         /**  
  97.          * return json result is format as below:  
  98.          * {sucess:false} or   
  99.          * {success:true,fileId:73,fileName:'myDoc.doc',filePath:'others/2010/aaa0393304.doc',message:'upload file success(10229 bytes)'}  
  100.          */  
  101.         saveDoc:function(config){   
  102.             return saveFn(config);   
  103.         },   
  104.         closeDoc:function(){   
  105.             officeObj.Close();   
  106.         }   
  107.     };   
  108. };  
/**
 * 集成软航Office在线编辑控件
 * @param {} conf
 * @return {}
 */
NtkOfficePanel=function(conf){
	var fileId=conf.fileId?conf.fileId:'';
	var officeObj = document.createElement('object');
	officeObj.width = "100%";
	officeObj.height = "100%";
	officeObj.classid= "clsid:A39F1330-3322-4a1d-9BF0-0BA2BB90E970"; 
	officeObj.codebase = __ctxPath+'/js/core/ntkoffice/OfficeControl.cab';//weboffice_V6.0.4.6.cab#V6,0,4,6
	
	var panelConf={border:false,layout:'fit'};
	
	/**
	 * 保存文档
	 */
	var saveFn=function(config){
		fileId=config.fileId?config.fileId:'';
		var result= officeObj.SaveToURL(__fullPath + '/file-upload',"EDITFILE","fileId="+fileId,config.docName+'.doc',0);
		var obj=Ext.util.JSON.decode(result);
		if(obj&&obj.success){
			fileId=obj.fileId;
		}else{
			obj={success:false};
		}
		return obj;
	};
	
	if(conf.showToolbar){
		panelConf.tbar=new Ext.Toolbar({
			items:[
				{
					text : '保留修改痕迹',
					iconCls : 'btn-archive-save-trace',
					handler : function() {
						officeObj.ActiveDocument.Application.UserName=curUserInfo.fullname;
						officeObj.ActiveDocument.TrackRevisions=true;
					}
				}, '-', {
					text : '取消保留痕迹',
					iconCls : 'btn-archive-cancel-trace',
					handler : function() {
						officeObj.ActiveDocument.TrackRevisions=false;
					}
				}, '-',{
					text : '清除痕迹',
					iconCls : 'btn-archive-eraser',
					handler : function() {
						officeObj.ActiveDocument.AcceptAllRevisions();
					}
				},'-',{
					text:'保存至服务器',
					iconCls:'btn-save',
					scope:this,
					handler:function(){
						Ext.MessageBox.prompt('输入提示','请输入文档的名称',function(btn,text){
							if(btn!='ok') return;
							if(text=='')text='未命名';
							var result=saveFn({docName:text});
							if(result.success){
								Ext.ux.Toast.msg('操作信息','成功文档保存~');
							}else{
								Ext.ux.Toast.msg('操作信息','保存文档失败!');
							}
						});
						
					}
				}
			]
		});
	}
	
	Ext.applyIf(panelConf,conf);

	var panel=new Ext.Panel(panelConf);
	panel.on('afterrender',function(){
			panel.body.appendChild(officeObj);
			panel.doLayout();
			if(fileId!=''){
				officeObj.OpenFromURL(__ctxPath+'/file-download?fileId='+fileId);
			}else{
				officeObj.CreateNew("Word.Document");
			}			
	});

	//对外公共方法
	return {
		panel:panel,
		officeObj:officeObj,
		openDoc:function(inFileId){
			fileId=inFileId;
			officeObj.OpenFromURL(__ctxPath+'/file-download?fileId='+fileId);
		},
		/**
		 * return json result is format as below:
		 * {sucess:false} or 
		 * {success:true,fileId:73,fileName:'myDoc.doc',filePath:'others/2010/aaa0393304.doc',message:'upload file success(10229 bytes)'}
		 */
		saveDoc:function(config){
			return saveFn(config);
		},
		closeDoc:function(){
			officeObj.Close();
		}
	};
};

 

 

使用以下所示:

Java代码
  1. //创建   
  2. this.officePanel=NtkOfficePanel({showToolbar:true,height:320});   
  3.   
  4. ...   
  5. //引用   
  6. items:[   
  7. ...,   
  8. this.officePanel.panel   
  9. ]   
  10.   
  11. //保存文档   
  12. Ext.MessageBox.prompt('操作信息','请输入文档的名称',function(btn,text){   
  13.                             if(text=='')text='未命名';   
  14. var resultJson=officePanel.saveDoc({docName:text});   
  15.                        
  16.                 });  
//创建
this.officePanel=NtkOfficePanel({showToolbar:true,height:320});

...
//引用
items:[
...,
this.officePanel.panel
]

//保存文档
Ext.MessageBox.prompt('操作信息','请输入文档的名称',function(btn,text){
							if(text=='')text='未命名';
var resultJson=officePanel.saveDoc({docName:text});
					
				});

 整合界面如下:

 

 

 

转载于:https://my.oschina.net/antAbby/blog/127157

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值