Javascript 如何在Ext Js 4.2中将过滤后的数据导出为PDF?

Javascript 如何在Ext Js 4.2中将过滤后的数据导出为PDF?,javascript,pdf,extjs,Javascript,Pdf,Extjs,我已经实现了一个网格过滤的示例,它可以显示json文件中可用的数据,并相应地进行过滤 我添加了一个选项使用Base64编码方法将过滤数据导出到excel中 var Base64=(函数(){ //私有财产 var keyStr=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789+/=”; //UTF-8编码的专用方法 函数utf8Encode(字符串){ string=string.replace(/\r\n/g,“\n”);

我已经实现了一个网格过滤的示例,它可以显示json文件中可用的数据,并相应地进行过滤

我添加了一个选项使用Base64编码方法将过滤数据导出到excel中

var Base64=(函数(){
//私有财产
var keyStr=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyz012456789+/=”;
//UTF-8编码的专用方法
函数utf8Encode(字符串){
string=string.replace(/\r\n/g,“\n”);
var utftext=“”;
对于(var n=0;n127)和((c<2048)){
utftext+=String.fromCharCode((c>>6)| 192);
utftext+=String.fromCharCode((c&63)| 128);
}否则{
utftext+=String.fromCharCode((c>>12)| 224);
utftext+=String.fromCharCode((c>>6)和63)| 128);
utftext+=String.fromCharCode((c&63)| 128);
}
}
返回utftext;
}
//公共编码方法
返回{
编码:(btoa的类型=='函数')?函数(输入){
返回btoa(utf8Encode(输入));
}:功能(输入){
var输出=”;
变量chr1,chr2,chr3,enc1,enc2,enc3,enc4;
var i=0;
输入=utf8Encode(输入);
while(i>2;
enc2=((chr1&3)>4);
enc3=((chr2&15)>6);
enc4=chr3&63;
if(isNaN(chr2)){
enc3=enc4=64;
}否则如果(isNaN(chr3)){
enc4=64;
}
输出=输出+
按键字符(附件1)+按键字符(附件2)+
按键字符(enc3)+按键字符(enc4);
}
返回输出;
}
};
})();
Ext.define('UserListDemo.view.override.grid'{
覆盖:“Ext.grid.GridPanel”,
要求:“Ext.form.action.StandardSubmit”,
/*
启动过程
*/
下载ExcelXML:函数(包括隐藏、标题){
如果(!title)title=this.title;
var vExportContent=this.getExcelXml(includeHidden,title);
变量位置='数据:application/vnd.ms excel;base64'+base64.encode(vExportContent);
/* 
动态创建和锚定标记,以强制下载建议的文件名
注意:下载属性是谷歌浏览器特有的
*/
如果(!Ext.isChrome){
var gridEl=this.getEl();
var el=Ext.DomHelper.append(gridEl{
标签:“a”,
下载:title+“-”+Ext.Date.format(新日期(),'Y-m-d Hi')+'.xls',
href:位置
});
el.click();
Ext.fly(el.destroy();
}否则{
var form=this.down('form#uploadForm');
如有需要(表格){
form.destroy();
}
form=this.add({
xtype:'表单',
itemId:“uploadForm”,
隐藏:是的,
标准提交:对,
网址:'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&文件名='+escape(标题+“.xls”),
项目:[{
xtype:'hiddenfield',
名称:'数据',
值:vExportContent
}]
});
form.getForm().submit();
}
},
/*
欢迎来到XML地狱
见:http://msdn.microsoft.com/en-us/library/office/aa140066(v=办公室10)aspx
欲知详情
*/
getExcelXml:函数(包括隐藏、标题){
var theTitle=title | | this.title;
var工作表=此.createWorksheet(包括隐藏的标题);
var totalWidth=this.columnManager.columns.length;
返回“”concat(
'',
'',
“+标题+”,
'',
'',
''+工作表.高度+'',
''+工作表宽度+'',
“假”,
“假”,
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
worksheet.xml,
''
);
},
/*
支持基于fieldname从存储返回字段信息的函数
*/
getModelField:函数(字段名){
var fields=this.store.model.getFields();
对于(变量i=0;i