批量打印利用缓存获取打印页面

为了适应客户的打印需求,添加了批量打印功能。通过后台向directprint1.jsp传递报表,名称及参数。执行多报表的批量打印。由于批量打印涉及到多个报表。所以不能使用润乾的标签在页面产生报表的html。如果客户想要保存打印的报表页面。就需要利用报表的缓存获取。

步骤一,建立要执行批量打印的报表

建立要执行批量打印的多个raq文件。如test1.raq设置参数arg1

 

步骤二,定义部署jsp文件,在应用中执行批量打印。

jsp发布文件directprint1.jsppiliangdayin.jsp部署到应用项目中

<form name=”form1″ method=”post” >

  <input type=”checkbox” name=”checkbox” value=”test1.raq” checked>报表一

  <input type=”checkbox” name=”checkbox” value=”test2.raq”>报表二

  <br>

  <input type=”button” name=”Submit2″ value=”开始打印” onClick=”getCheck()”>

</form>

<script language=”javascript”>

         function getCheck(){

                   var checkBox = document.getElementsByName(‘checkbox’);

                   var url = “directprint1.jsp?report=”;

                   for( var i =0;i <checkBox.length ;i++){

                            if(checkBox[i].checked){

                                     //alert(checkBox[i].value);

                                     url = url + “{“+checkBox[i].value+”(arg1=15)”+”}”;

                            }

                   }

                   //alert(url);

                   //return url;

                   openwin(url,’newFream’);

         }

</script>

定义控件执行对test1.raq等报表的批量打印

 

步骤三,定义api缓存设置。

directprint1.jsp内添加润乾的回调函数。runqian_printOver()

         function runqian_printOver() 

         {

<%

Context ctx = new Context();

CacheManager manager = CacheManager.getInstance();

manager.setCachePath(“C:\\Temp”);

ctx.setParamValue(“arg1″,arg1);

ReportCache rc = manager.getReportCache(“test1.raq”, ctx, 0); //把报表模板名赋给缓存管理器,系统即自动加载该报表,并建立一系列的缓存管理机制

IReport re= rc.getReport(true); //从缓存中获取报表对象

         ExcelReport xml=new ExcelReport();

          xml.export( “aa”,re);//第一个参数为sheet名,第二个为报表计算结果。

          xml.saveTo(“C:\\b.xls”);

%>

}

 

通过raq文件名获取报表缓存,并在context里对报表缓存传参。导出excel文件。

热门文章