java程序员,大概都知道jasperreport开源报表工具,但打印jasperreport却是一件困难事:用web browser打印,不能做到精确套打或者分页,用applet打印,需要客户端安装jre,并且启动速度慢.
自从有朋友前段时间写了一个关于使用杰表打印控件来打印jasperreport方案后(参见:
http://www.blogjava.net/three-3/archive/2011/03/23/327184.html) ,很多朋友试用后,觉得效果不错,但也有朋友提出,如何批量打印由jasperreport生成的报表,所以,我在这里,简单介绍一下这个问题.方法如下:
在打印网页中,声明一个jatoolsPrinter对象,在documents属性中,给出jasperreport报表的链接即可,如下代码所示:
复制内容到剪贴板
代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="guide.css" />
<title>打印预览一个分页文档</title>
<!-- 插入打印控件 -->
<OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=5,7,0,0"></OBJECT>
<script type="text/javascript">
function doPrint(how)
{
//打印文档对象
var myDoc ={
documents: ['jasper/reportviewer?...',
'jasper/reportviewer?...'],// 一次性打印jasperreport生成的两个报表
copyrights : '杰创软件拥有版权 www.jatools.com'
};
// 调用打印方法
if(how == '打印预览...')
jatoolsPrinter.printPreview(myDoc ); // 打印预览
else if(how == '打印...')
jatoolsPrinter.print(myDoc ,true); // 打印前弹出打印设置对话框
else
jatoolsPrinter.print(myDoc ,false); // 不弹出对话框打印
}
</script>
</head>
<body>
<p> <span class="title">打印预览一个分页文档</span><span class="src">查看源代码</span> </p>
<div class='pagecontainer'>
<div id='page1' class='pagestyle'>文档第一页</div>
<div id='page2' class='pagestyle'>文档第二页</div>
</div>
<br>
<input type="button" value="打印预览..." onClick="doPrint('打印预览...')">
<input type="button" value="打印..." onClick="doPrint('打印...')">
<input type="button" value="打印" onClick="doPrint('打印')">
</body>
</html>