下面就通过数据分析软件FineReport来介绍一下如何设置批量打印。
工具/原料
数据分析软件FineReport7.1.1
大小:148.2M 适用平台:windows/linux
批量打印_(Get/Post)
1、问题描述若您有很多张模板需要打印,而如果一个一个进行打印的话会比较麻烦,希望批量打印出来。例如有一张全国销售人员的业绩报表,我传入不同销售人员参数后,批量打印出这些报表。
2、批量打印传入的url坼黉赞楞格式批量打印多张报表url格式如:http://localhost:8075/WebReport/ReportServer?reportlets=[{reportlet:'reportname1.cpt',paraname:'paravalue'},{reportlet:'reportname2.cpt',paraname:'paravalue'}]。调用内置的打印方法直接使用完整的url进行批量打印:var printurl="http://localhost:8075/WebReport/ReportServer?reportlets=[{reportlet:'reportname1.cpt',paraname:'paravalue'},{reportlet:'reportname2.cpt',paraname:'paravalue'}]";FR.doURLPDFPrint(printurl,true); //get方式传参
3、如批量打印的模板过多的话,url就很长,而get方式对长度有限制,url过长时会导致打印失败。推荐批量打印的时候用post菱诎逭幂方式,reportlets参数打包在数据包中传输,不在url中显示,从而缩短url长度,另外安全性较好,如下:var printurl="http://localhost:8075/WebReport/ReportServer"; var reportlets = FR.cjkEncode("[{reportlet: '/doc/Primary/Parameter/Parameter_1.cpt', 地区 : '华东'}, {reportlet: '/doc/Primary/Parameter/Parameter_1.cpt', 地区 : '华北'}]"); var config = { url : printurl, isPopUp : false, data : { reportlets: reportlets } }; FR.doURLPDFPrint(config);注:调用打印方法中的第二个参数为true表示弹出对话框,为false表示不弹出对话框即静默打印。
4、示例如需要打印出某个模板所有参数情况对应的结果,如下图,选择希望打印的参数值,点击doPrint按钮批量打印出对应的结果。
![数据分析软件FineReport教程:[3]批量打印](https://exp-picture.cdn.bcebos.com/b6f0f0f97fbd4c7cb1e8e3f2b8bad341027d30f3.jpg)
5、如:k2.cpt,同上。如下:若两张模板均放置在reportlets下,URL中的输入地址如下。
![数据分析软件FineReport教程:[3]批量打印](https://exp-picture.cdn.bcebos.com/e076d77622bc7dc5413cf4ec5e460596b91429f3.jpg)
7、第一个模板(k1.cpt)的第三页,如下:
![数据分析软件FineReport教程:[3]批量打印](https://exp-picture.cdn.bcebos.com/b442d6d246fe474e5ad8ec0cb0ef354f51b81ff3.jpg)
9、累加页码效果而地址栏后面不加&__cumulatepagenumber__=false,其效果是页码累加的效果,如下:第一个模板(k1.cpt)的每页内容的当前页还是如上效果,而总页数变为4。第二个模板(k2.cpt)为第四页的内容,显示如下:查看到,第二个模板的页码,是累加其第一个模板的页码的,就不是从第一页开始重新计算当前第二个模板页码的。
![数据分析软件FineReport教程:[3]批量打印](https://exp-picture.cdn.bcebos.com/92dd32f7dfb2dc196b7784a895def4dca13910f3.jpg)