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