报表知识库
我要提问

润乾报表动态指定输出的打印机


润乾报表动态指定输出的打印机



一些客户在使用润乾报表打印功能时,可能需要根据报表纸张的大小,动态的选择输出到哪个打印机,因为不同打印机使用的纸张大小可能是不一样的。而每次在打印预览时手动的选择打印机,不能完全满足需求,因为打印报表的使用者可能对哪些打印机对应什么纸张并不是十分清楚,所以使用起来不是十分的方便。


润乾报表在标签中给客户提供了指向所需打印机的接口,客户可以根据自己的需要,动态的给报表指定输出的打印机,也就是给指定打印机的标签传参数,下面就对这个功能做一个介绍。


功能介绍:


润乾的report:html标签中有一个属性:


printerName    指定打印本报表的打印机名称,没有指定或没有找到指定的,则使用默认打印机


 


如果savePrintSetup=”yes”时,也就是要保存客户端的打印设置时,将优先使用用户以前保存的打印机名称


 


标签里指定了打印机,最终用户在浏览器中打印时,仍然可以手动选择打印机


 


实现步骤:


 


首先,在jsp中获取报表的纸张类型。


获取纸张类型的代码如下:


         request.setCharacterEncoding( “GBK” );


         String report = request.getParameter( “raq” );


         String reportFileHome=Context.getInitCtx().getMainDir();


         String raq = application.getRealPath(reportFileHome)+File.separator+report;


ReportDefine rd =(ReportDefine)ReportUtils.read(raq);                  //读取raq文件


Short  i = rd.getPrintSetup().getPaper();


 


根据返回i的值指定打印机的代码如下:


                   String  printer = null;


                   if( i==9){


                            printer = “Printer1″;


                   }else{


                            printer = “Printer2″;


                   }


上面的代码判断,如果i的值为9,即纸张类型为A4的时候,指定打印机名字为Printer1,否则指定打印机的名字为Printer2


把打印机的名称传给标签,具体做法如下:


<table align=center>


          <tr><td>


                   <report:html name=”report1″ reportFileName=”<%=report%>”


                            funcBarLocation=”"


                            needPageMark=”yes”


                            generateParamForm=”no”


                            params=”<%=param.toString()%>”


        printerName =”<%= printer %>”


                            width=”-1″


                            exceptionPage=”/reportJsp/myError2.jsp”


                   />


          </td></tr>


</table>


 


这样在jsp中经过上面的设置就可以实现根据报表的纸张类型动态的输出报表到指定的打印机了。