1. 程式人生 > >批量列印--不展現直接後臺列印

批量列印--不展現直接後臺列印

批量列印--不展現直接後臺列印(跳過手動觸發列印)

實現效果:

客戶經常想要實現多個報表批量列印(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方法,跳過觸發的步驟直接列印所傳的報表檔案。