目的:用java实现数据的批量打印。
需求:例如,满足用户一个查询操作结果出来50条记录,要求每一条记录的信息打印在一页上面,这就需要打印50页。
原理:把每一条记录(用户对象吧)依次添加到List对象里,把List对象作为一个数据源对象传递给Jasperreport对象,Jasperreport在根据用户的ID来作分组,即设置Jasperreport每一组信息在一个新的页面打印,这样就依次批量打印了。
不足:客户端需要安装jre(java运行时环境)来支持打印操作。
为了解除打印时频繁的打印提示,所以修改了客户端jre下的java.policy文件,该文件位置%jre_home%\jre6\lib\security\java.policy ,这样打印的时候就不在有烦人的提示了。
文件内容如下,其中红色字体为新增内容。
// Standard extensions get all permissions by default
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
// default permissions granted to all domains
grant {
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See "http://java.sun.com/notes" for more information.
permission java.lang.RuntimePermission "stopThread";
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission "localhost:1024-", "listen";
// "standard" properies that can be read by anyone
permission java.security.AllPermission;
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
};
说明:
附件中是例子源码,可以放在Tomcat里面编译并运行。
1、由于JasperReport\WebRoot\print\applets\jre-6u20-windows-i586.exe过于大,所以没有上传,可到java官方网站自行下载。
2、index.jap中提到的PrintApplet.class已经在JasperReport\WebRoot\print\applets\mytest.jar里面。