相信接触过ireport报表的程序猿,大多都会被其报表打印功能所困扰,虽然jasperreport有自带的japserPrint的打印功能,代码如下
JasperPrint jasperPrint = getJasperPrint(request, JREPORT_RELATIVE_DIR+__report, null, __report) ;
JasperPrintManager.printReport(jasperPrint,true);
但可惜的是这段代码调用的却是我们服务端的打印机,与我们所需要的功能并不相符。
那要怎么才能实现客户端的打印功能呢,网上大致有两种做法,一种是重写jasperreport用来打印的jasperPrint小程序,另一种就是利用jatoolsprinter控件来打印jasperreport的报表
但是这两种方法,都需要下载额外的东西到客户端,这是比较不足的一点,此外,这两种方法也都要修改到源代码,这对于我这种初生牛犊的娃来说,门槛也是不低的呀,于是我就自己捉摸着,要怎么解决这个难题。
之前做其他项目的时候,也有遇到要打印的,那时一直用的都是jquery的打印插件,觉得简单明了,但是以前做的那些,内容都是显示在页面上的某个div中的了,直接调用jquery的打印方法就行了,可是这次怎么办,因为要显示的内容采用了分页的显示方法,所以如果只是简单的调用jquery的打印方法,那也无法将所有的内容进行打印。
后来我就想,因为在显示分页报表的时候,我已经在服务端生成好了html文件,那么,我也可以将生成的html文件放在页面在某个div中,然后将其内容进行隐藏,在要打印的时候,就对此div进行打印便可。因为引入的文件是静态的html文件,因此所造成的额外开销并不多,经过试验证明,我这个偷懒的方法是行得通的^_^