打印预览与直接打印- 报表打印-报表展现与输出
目录

打印预览与直接打印

Flash打印和Applet打印都提供了打印预览和直接打印两种打印方式可供选择。报表展现页面上可以同时使用打印预览和直接打印按钮,互不影响。但打印预览和直接打印所调用的打印方式相同,即都使用Flash打印或都使用Applet打印方式进行打印。

打印预览

打印预览的方式进行打印时,在报表展现页面点击打印预览按钮后进入打印预览界面,再通过打印预览界面的打印按钮,进行报表打印。

打印预览按钮是否显示可以通过标签needPrint来控制,值为yes时,显示打印预览按钮;值为no时不显示。

不打印预览直接打印

不预览直接打印的方式进行打印时,通过点击报表展现页面上的直接打印按钮,不进入打印预览界面,直接进行报表打印。

直接打印按钮是否显示可以通过标签needDirectPrint来控制,值为yes时,显示直接打印按钮,为no时不显示直接打印按钮。

注意:Flash打印由于Flash Player安全沙箱机制的限制,不能传递纸张信息给打印机,需要在打印时手动设置打印机属性来调整纸张信息。且在使用Flash方式进行报表打印时,无法获取浏览器页面缩放比例,所以请将浏览器缩放比例设置为100%进行打印,否则有可能影响打印效果。

不预览报表打印

方案一:

Flash打印直接访问如下地址,可以不访问报表直接进入打印预览。

1) 使用raq文件访问(reportType值为2)

项目名/gezEntry.url?patternID=mfg_exportReport&format=flash_print&object=complex&reportType=2&serverPath=RAQ文件路径&报表参数1=参数值&报表参数n=参数值....

2) 使用resID访问(reportType值为5)
    项目名/gezEntry.url?patternID=mfg_exportReport&format=flash_print&object=complex&reportType=5&resID=资源ID&报表参数1=参数值&报表参数n=参数值...

方案二:

Flash打印提供了一个JS方法,可以调用该JS实现不预览报表,直接打印预览或直接打印报表。该方法中需要将报表名称参数等信息通过json进行传递,并且参数需要使用URLEncoder加密,编码方式必须为UTF-8。

函数说明:

_print()函数实现打印

ctxPath:应用路径,动态获取。

reportFileName:报表名称,使用UTF-8加密。

directPrint:是否直接打印。

barLocation:工具条位置,可以选择top或者left或者right。

params:参数串,和v4一样的格式,使用UTF-8加密。

示例代码:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@page import="java.net.URLEncoder"%>
<%
String path = request.getContextPath();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>demo</title>
<script type="text/javascript" src="<%=path %>/mis2/gezFlashPrint/js/raqFlashPrint.js"></script>
<script type="text/javascript" src="<%=path %>/mis2/gezFlashPrint/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
function _print(){
var report_obj = {
"ctxPath":"<%=path%>",
"reportFileName":"<%=reportFileName%>",
"directPrint":"false",
"barLocation":"left",
"params":"<%=params%>"
};
rq_flashPrint(report_obj);
}
</script>
</head>
<body>
<input type="button" value="clickme" onclick="_print()" />
</body>
</html>