jasper文件无法转为html,Execwb+jasperreport打印HTML格式的报表无法分页问题分析和解决方案...

一、问题描述:

利用ireport+jasperreport做报表,并导出为html格式的文件,用IE浏览器在网页上用WB.ExecWB控件打印该html格式的报表时,报表的内容虽然是已经分页了,不过打印出来的报表并未进行分页,出现了一页纸上不止有一页报表表格(比如说第一页纸上,除了报表内容中的第一个表格外,还有第二个表格的一部分)。

二、问题分析:

通过分析jasperreport生成的html文件,发现jasperreport是根据

name="JR_PAGE_ANCHOR_*_*">

(*表示数字)进行分页的。如下图红色方框中的代码:

a4c26d1e5885305701be709a3d33442f.png

而用WB.ExecWB控件打印文件时,是根据

进行分页的,实际上还有其他属性,例如page-break-before,page-break-inside等,在这里就不赘述了。通过上述代码片段可以看出,通过jasperreport生成的html文件没有WB.ExecWB控件进行分页打印需要的分页标签。所以,用该控件打印html文件格式的报表,是不会进行合理分页的,只会是在内容填充满一页后再进行分页,自然就达不到我们的要求了。

三、解决方案:

根据对该问题的分析,很明显可以看出,要让WB.ExecWB控件在打印时进行合理地分页,我们必须在需要分页的地方添加分页标签,进行强制分页。

我的解决方法是在jasperreport生成html文件时,在html文件中插入分页标签

style="page-break-after: always">。

此时,最直接的方法就是修改jasperreport生成html文件的源代码。打开jasperreport中生成html文件的类net.sf.jasperreports.engine.export.JRHtmlExporter,找到exportReportToWriter()方法,并添加响应插入分页标签的代码,如下图:

a4c26d1e5885305701be709a3d33442f.png

其中,蓝色方框中的

***>

标签是jasperreport自身进行分页的标签。

***>

是我添加进去的用于提供给WB.ExecWB控件进行分页打印用的标签,另外添加的一些
标签,仅仅是为了调整页面上报表的位置。

添加这几行代码,重新build一下后,将新的jar文件导进项目中,搞定!

(至于源代码下载、部署、编译,这里就不赘述了。)

该解决方案比较粗糙,如有其它想法或建议,各位高手,请不吝赐教。

四、扩展:

该解决方案只是针对WB.ExecWB组件,因为不同组件对于HTML文件分页打印的分页标签是有差别的。不过都是一样的原理,只要修改源代码中相应的标签便可适应不同的组件。如果需要方便日后改变组件能识别的分页标签,可以把这部分信息写在配置文件中,日后修改起来就不用每次都区编译源码了,这会比较方便使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值