如何實現報表的批次列印需求
在 web 報表應用中,經常會遇到批次列印的需求,即點選一次列印按鈕,實現多張報表的列印輸出。潤乾報表提供了兩種不同的列印方式(applet 列印、PDF 列印)實現批次列印需求,同時也支援橫縱報表列印。下面我們就來看一下每一種方式的具體實現方法。
一、applet 批次列印
1、環境配置要求
applet 列印要求客戶端至少正確配置了 jre 環境
目前 applet 列印只支援 IE 核心瀏覽器
2、實現方法
可透過訪問 jsp 拼接引數的方式實現,示例 URL 為:
不帶引數:
帶引數:
引數拼接格式說明:
report={無引數報表名 1}{無引數報表名 2}{報表 1( 引數 1=value1; 引數 2=value2;…)}{報表 2( 引數 1=value1; 引數 2=value2;…)}…&prompt=yes&needSelectPrinter=yes
3、示例原始碼
directprint.jsp 頁面完整程式碼:
<%@ page contentType="text/html;charset=UTF-8" %> <%@ page import="com.raqsoft.report.view.*"%> <html> <body> <% //此JSP引數格式為:report={無引數報表名1}{無引數報表名2}{報表1(引數1=value1;引數2=value2;...)}{報表2(引數1=value1;引數2=value2;...)}...&prompt=yes&needSelectPrinter=yes request.setCharacterEncoding( "UTF-8" ); String report = request.getParameter( "report" ); //"請輸入報表檔名及引數串report={無引數報表名}{報表1(引數1=value1;引數2=value2;...)}{報表2(引數1=value1;引數2=value2;...)}..." if( report == null || report.trim().length() == 0 ) throw new Exception( ServerMsg.getMessage(request,"jsp.dpArgError") ); String prompt = request.getParameter( "prompt" ); String needSelectPrinter = request.getParameter( "needSelectPrinter" ); String pages = request.getParameter( "pages" ); String copies = request.getParameter( "copies" ); if( pages == null ) pages = ""; if( copies == null ) copies = "1"; String appmap = request.getContextPath(); String serverPort = String.valueOf( request.getServerPort() ); String serverName = request.getServerName(); String appRoot = " String printLabel = ServerMsg.getMessage(request,"jsp.dpPrint"); %> <object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="<%=appRoot%>/jre-6u24-windows-i586.exe#Version=1,6,0,0" width="80" height="32" id="report1_directPrintApplet" style="vertical-align:middle"> <param name="name" value="report1_directPrintApplet"> <param name="code" value="com.raqsoft.report.view.applet.DirectPrintWithoutShow.class"> <param name="archive" value="<%=appmap%>/raqsoftReportApplet.jar"> <param name="type" value="application/x-java-applet;version=1.6"> <param name="appRoot" value="<%=appRoot%>"> <param name="dataServlet" value="/reportServlet;jsessionid=<%=session.getId()%>?action=1"> <param name="fileName" value="<%=report%>"> <param name="srcType" value="file"> <param name="fontFace" value="dialog"> <param name="fontSize" value="10pt"> <param name="fontColor" value="#808040"> <param name="backColor" value="#126356"> <param name="label" value="<%=printLabel%>"> <param name="needPrintPrompt" value="<%=prompt%>"> <param name="needSelectPrinter" value="<%=needSelectPrinter%>"> <param name="needSetPageSize" value="no"> <param name="scriptable" value="true"> <param name="paramCharset" value="UTF-8"> <param name="blackWhitePrint" value="no"> <param name="mirrorPrint" value="no"> <param name="icon" value="/raqsoft/images/print.gif"> <param name="copies" value="<%=copies%>"> <param name="pages" value="<%=pages%>"> <comment> <embed type="application/x-java-applet;version=1.6" width="80" height="32" id="report1_directPrintApplet" code="com.raqsoft.report.view.applet.DirectPrintWithoutShow.class" archive="<%=appmap%>/raqsoftReportApplet.jar" type="application/x-java-applet;version=1.6" appRoot="<%=appRoot%>" dataServlet="/reportServlet;jsessionid=<%=session.getId()%>?action=1" fileName="<%=report%>" srcType="file" fontFace="dialog" fontSize="10pt" fontColor="#808040" backColor="#126356" label="<%=printLabel%>" needPrintPrompt="<%=prompt%>" needSelectPrinter="<%=needSelectPrinter%>" needSetPageSize="no" scriptable="true" paramCharset="UTF-8" blackWhitePrint="no" mirrorPrint="no" copies="<%=copies%>" pages="<%=pages%>" icon="/raqsoft/images/print.gif"> </embed> </comment> </object> <script language=javascript> /* function raqsoft_printOver() { window.close(); }*/ </script> </body> </html>
二、PDF 批次列印
1、環境配置要求
瀏覽器安裝了 PDF 外掛。特殊地,IE 瀏覽器只識別 adobe reader 外掛,不識別其他 PDF 外掛
PDF 列印方式無瀏覽器限制,可相容常用瀏覽器。
2、實現方法
可透過訪問 jsp 拼接引數的方式實現,示例 URL 為:
不帶引數:
帶引數:
引數拼接格式說明:
report={無引數報表名}{報表 1( 引數 1=value1; 引數 2=value2;…)}{報表 2( 引數 1=value1; 引數 2=value2;…)}
3、示例原始碼
pdfBatchPrint.jsp 頁面完整程式碼:
<%@ page contentType="text/html;charset=UTF-8" %> <%@ page import="java.net.*" %> <%@ page import="com.raqsoft.report.view.*"%> <html> <title>PDF列印報表</title> <head> </head> <body> <% //此JSP引數格式為:report={無引數報表名1}{無引數報表名2}{報表1(引數1=value1;引數2=value2;...)}{報表2(引數1=value1;引數2=value2;...)} request.setCharacterEncoding( "UTF-8" ); String report = request.getParameter( "report" ); if( report == null || report.trim().length() == 0 ) throw new Exception( "請輸入報表檔名及引數串report={無引數報表名}{報表1(引數1=value1;引數2=value2;...)}{報表2(引數1=value1;引數2=value2;...)}..." ); String src = request.getContextPath() + ServletMappings.getMapping( "com.raqsoft.report.view.ReportServlet" ) + "?action=45&report=" + URLEncoder.encode( report, "UTF-8" ); %> <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id=pdfobj width="100%" height="100%" border="1"> <param name="_Version" value="65539"> <param name="_ExtentX" value="20108"> <param name="_ExtentY" value="10866"> <param name="_StockProps" value="0"> <param name="SRC" value="<%=src%>"> <comment> <embed id=pdfobj1 type="application/pdf" src="<%=src%>" width="100%" height="95%"></embed> </comment> </object> </body> </html>
此問題需要將 URL 中的特殊字元進行轉義處理,在 Tomcat7 以上版本以及 IE 瀏覽器中測試時易出現。例如:
{ 轉義後是:%7B
} 轉義後是:%7D
也就是我們在測試時,需要把如下 URL 換成轉義後的 URL:
原始 URL:
轉義後可正常訪問的 URL:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2671120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何實現報表直接列印需求
- 如何實現報表的點選表頭排序需求排序
- 報表合計需求的實現方法
- MySQL實現MYISAM表批次壓縮的方法MySql
- 報表展現時如何實現固定表頭效果
- 報表如何批次匯出成 excel 檔案Excel
- 備忘錄——基於rdlc報表實現列印產品標籤
- 報表如何實現行列互換效果?
- 校園小型列印店,如何實現列印智慧自助化?
- 伺服器如何實現批次操作伺服器
- gitlab如何實現批次clone倉庫Gitlab
- 幾百萬條的報表咋列印?
- fastreport .net列印普通報表AST
- 大屏報表中如何實現多圖表間的聯動?
- 利用python列印實現九九乘法口訣表Python
- 用js實現列印九九乘法表JS
- 如何用 Golang 的 channel 實現訊息的批次處理Golang
- 前端實現列印前端
- 如何在 web 端實現一個有日曆的報表Web
- Powershell 如何批次獲取檔案大小的實現程式碼
- 如何在敏捷開發中實現更好的需求管理敏捷
- web 端展現報表時查詢表單如何實現引數聯動Web
- WEB 報表如何做到不需要預覽就直接列印Web
- PDF批次列印工具BatchOutput PDF for MacBATMac
- 如何用低程式碼實現批次匯出PDF?
- 如何實現報表滾動到底部進行翻頁的效果
- Toolbar不能實現你的需求?
- 輕鬆實現報表整合
- Laravel 框架加密解密如何實現 key 值多變的需求Laravel框架加密解密
- web 頁面如何實現 echarts 統計圖的列印匯出?WebEcharts
- 填報表實現隔行異色的效果
- 標籤列印軟體如何批次生成001-004流水號
- 條碼列印軟體中如何批次製作可變序列號
- JPG轉PDF如何實現?圖片批次轉換PDF的快捷方法
- pageoffice6 版本實現線上開啟word 檔案禁止儲存、禁止另存、禁止列印的需求
- 如何實現報表視覺化,有沒有工具推薦視覺化
- python實現報表用什麼?Python
- 微信域名檢測線上批次檢測如何實現?——利用域名檢測api介面實現批次檢測工具教程API