asa*_*n74 8 html java jsp reporting jasper-reports
我想使用JSP创建一个动态报告网页.基本上它应该包含以下部分:
我不想自己实现所有内容,而是想使用java报告库,所以我使用JasperReports创建了我的报告.pdf输出非常好,但报告的html导出不适合我的目的.
JasperReport的html导出创建了一个包含大量硬连线代码的html文件,以及相当随机的配置选项.例如,默认情况下它创建一个带白色背景的表(<table style="... bgcolor="white" ... ">),可以使用IS_WHITE_PAGE_BACKGROUND选项关闭,另一方面cellpadding="0" cellspacing="0" border="0",在table标签中硬连线.它也很奇怪(并使css样式很难)而不是span文件类,html文件包含<span style="font-family: sansserif; color: #000000; font-size: 10.0px;">我的所有字段.
当然我可以使用JSP实现html输出,但这意味着我必须设计输出两次(一次在jrxml中用于JasperReports,一次在JSP中),我必须重新实现报告功能(如小计计算,总计算,分组) ......)违反DRY原则.
实现这个的最佳实践是什么?是否可以使用JasperReports创建更好的HTML导出?
beg*_*ggs 11
将JasperReports的HTML输出更改为不错并不容易.这是一个旧的引用原因:
... HTML或XLS等文档格式不支持文本和图形元素的绝对定位.这些文档的内容以网格或表格结构排列.当然,有些人可能会争辩说,由于CSS可以在HTML中对元素进行绝对定位,但是你可以确定CSS标准功能远远没有在所有浏览器中实现,或者相同的HTML文档在各处看起来都不一样.
这就是生成HTML,XLS或CSV文档的^ JasperReports内置导出器使用特殊算法的原因,以便在某种网格中排列某个文档页面上的元素.当报表设计非常复杂或聚集时,从绝对定位到网格或表格布局会产生非常复杂的表格,其中包含许多未使用的行和列,以使其适用于元素之间的空白空间或其特殊对齐.
如上所述它已经过时了,但据我所知,它仍然准确无误.
您可以为HTML导出器控制的内容列表非常有限:
net.sf.jasperreports.export.html.frames.as.nested.tables
net.sf.jasperreports.export.html.remove.emtpy.space.between.rows
net.sf.jasperreports.export.html.size.unit
net.sf.jasperreports.export.html.using.images.to.align
net.sf.jasperreports.export.html.white.page.background
net.sf.jasperreports.export.html.wrap.break.word
net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name}
net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name}
Run Code Online (Sandbox Code Playgroud)
我远离HTML,只使用PDF,Excel和CSV,除非客户要求HTML.如果必须使用HTML,则可以定义样式表以使用您的站点,并使用jQuery删除所有内联样式,以便样式表接管.就像是:
$(document).ready(function() {
$('span').removeAttr('style');
});
Run Code Online (Sandbox Code Playgroud)