有没有办法将 HTML 报告的大小指定为百分比,例如width = "90%"
?或者以其他方式确保报表的宽度在导出为 HTML 时占用户屏幕的一定百分比?
我不介意创建一个额外的模板,或者只将图表导出为图像。
我正在使用 Jasper 报告版本 6.9.0。
有没有办法将 HTML 报告的大小指定为百分比,例如width = "90%"
?或者以其他方式确保报表的宽度在导出为 HTML 时占用户屏幕的一定百分比?
我不介意创建一个额外的模板,或者只将图表导出为图像。
我正在使用 Jasper 报告版本 6.9.0。
Jasper 报告导出旨在实现像素完美(可打印)输出,这就是为什么默认情况下,无论浏览器窗口的大小如何,大小都会以像素为单位与报告的实际宽度相对应。
为了实现这一点, Jasper 报告HTMLExporter
创建了一个包含 3 列的表格,第一个为空列width="50%"
,第二个列宽(以 px 为单位)作为报告的宽度,第三个空列再次为width="50%"
. 这将使结果居中,并且报告的宽度将等于 jrxml 中指示的宽度。
如果从 java 导出,则可以覆盖此行为并设置自己的 html 页眉和页脚。
例子
HtmlExporter exporter = new HtmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleHtmlExporterOutput("html/my.html"));
SimpleHtmlExporterConfiguration configuration = new SimpleHtmlExporterConfiguration();
configuration.setHtmlHeader(
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n" +
"<html>\r\n" +
"<head>\r\n" +
" <title></title>\r\n" +
" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\r\n" +
" <style type=\"text/css\">\r\n" +
" a {text-decoration: none}\r\n" +
" .jrPage {width:90% !important}\r\n" +
" </style>\r\n" +
"</head>\r\n" +
"<body text=\"#000000\" link=\"#000000\" alink=\"#000000\" vlink=\"#000000\">\r\n" +
"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\r\n" +
"<tr><td width=\"5%\"> </td><td align=\"center\">\r\n");
configuration.setHtmlFooter(
"</td><td width=\"5%\"> </td></tr>\r\n" +
"</table>\r\n" +
"</body>\r\n" +
"</html>\r\n");
exporter.setConfiguration(configuration);
exporter.exportReport();
基本上,我对默认 html 页眉和页脚所做的更改是
添加.jrPage
样式以覆盖像素宽度,改为更改为 90% 宽度。
将两侧列的百分比从更改50%
为5%
这将创建一个动态大小的 html,该 html 居中并占据可用窗口大小的 90%。
示例在这种情况下如何自动缩放由图表生成的图像
考虑到这个问题中的 jrxml如何将报告导出到 PDF/A-1a、PDF/A-1b?
添加net.sf.jasperreports.export.html.class
到图表元素
<pieChart>
<chart isShowLegend="false">
<reportElement x="225" y="-670" width="320" height="140" uuid="23bd26a6-04a4-406f-8a1a-5e1b260cb75d">
<property name="net.sf.jasperreports.export.html.class" value="pieChart"/>
</reportElement>
....
在 HTML 标头中添加一些 CSS
@media only screen and (min-width : 768px) {
td.pieChart img {height:300px !important;}
}
@media only screen and (min-width : 1224px) {
td.pieChart img {height:400px !important;}
}
但是请注意,图像只是“重新缩放”,因此它将保持其原始分辨率。