批量打印--不展现直接后台打印

来源:互联网 发布:php给图片加文字水印 编辑:程序博客网 时间:2024/06/11 23:56

批量打印--不展现直接后台打印(跳过手动触发打印)

实现效果:

            客户经常想要实现多个报表批量打印(applet打印),并且不对报表进行展现(不手动点击打印触发),直接进行APPLET打印操作。

解决思路

        <object></object>标签来直接调用applet程序进行批量打印

      参考 应用开发教程  API批量直接打印 Jsp代码如下:

<%

  //report的参数格式为:report={无参数报表名}{报表1(参数1=value1;参数2=value2;...)}{报表2(参数1=value1;参数2=value2;...)}...prompt=yes

      request.setCharacterEncoding("GBK" );

    String report = request.getParameter("report" );

    if( report == null || report.trim().length()== 0 ) throw new Exception( "report=null" );

      String prompt =request.getParameter( "prompt" );

    String appmap = request.getContextPath();

 

    String serverPort = String.valueOf(request.getServerPort() );

      String serverName = request.getServerName();

      String appRoot ="http://" + serverName + ":" + serverPort + appmap;

%> 

 

 <objectclassid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="<%=appRoot%>/j2re-1_4_1-windows-i586-i.exe#Version=1,4,1,0"width="40" height="16"id="report1_directPrintApplet"style="vertical-align:middle"> 

    <param name="name"value="report1_directPrintApplet">

    <param name="code"value="com.runqian.report4.view.applet.DirectPrintApplet.class"> 

    <param name="archive"value="<%=appmap%>/runqianReport4Applet.jar">

    <param name="type"value="application/x-java-applet;version=1.4">

    <param name="appRoot"value="<%=appRoot%>">

    <param name="dataServlet"value="/reportServlet?action=1">

    <param name="srcType"value="file">

    <param name="fontFace"value="宋体">

    <param name="fontSize"value="18pt"> 

    <param name="fontColor"value="#000000"> 

    <param name="backColor"value="#11111111">

         <paramname="icon" value= "<%=appmap%>/images/print.gif">

  //为打印控件的打印按钮设置图片,如果不设置此参数,则打印按钮上不显示图片

    <param name="label"value="dayin">

    <param name="needPrintPrompt"value="<%=prompt%>">

    <param name="scriptable"value="true">

 </object>

 &nbsp;&nbsp; <a href="javascript:window.close()"class="style3 style5">quxiao</a>

<scriptlanguage=javascript>

//此函数返回的格式为:"{无参数报表名}{报表1(参数1=value1;参数2=value2;...)}{报表2(参数1=value1;参数2=value2;...)}..."

 function runqian_getPrintReports() {

//请在此函数里加上打印前需要的处理,最后返回需要打印的报表

 return "<%=report%>";

 }

 </script>

此示例代码直接跑 在浏览器中输入:

http://127.0.0.1:6001/demo/reportJsp/批量打印.jsp?report={txt.raq}{txt2.raq}prompt=yes 需要手动点击进行打印

而客户最终想要实现的效果是在网页中直接输入url就可以触发applet打印 进行批量打印

此时只要将上面批量打印.jsp中的

<paramname="code"value="com.runqian.report4.view.applet.DirectPrintApplet.class">

改为

<paramname="code"value="com.runqian.report4.view.applet.DirectPrintWithoutShow.class">

 

注:DirectPrintWithoutShow.java这个类继承了原来的直接打印的类DirectPrintApplet,然后在这个类中直接调用DirectPrintApplet.java中的print方法,跳过触发的步骤直接打印所传的报表文件。

0 0
原创粉丝点击