如何在iReports中向reportElement标记添加新属性?

时间:2012-12-19 11:34:37

标签: java jasper-reports

我正在尝试在报告中包含css类。是否可以将自己的属性添加到reportElement标记中,以便我可以包含我的css文件引用链接?

谢谢

1 个答案:

答案 0 :(得分:4)

您需要做的是将属性添加到您想要引用的字段中。要添加班级名称,您需要添加 net.sf.jasperreports.export.html.class 并添加ID,您需要将 net.sf.jasperreports.export.html.id 添加为媒体资源。例如,下面是一个Text字段,用于设置:

<textField>
    <reportElement uuid="2399e4ef-633c-4d17-b964-3e093ece1936" x="0" y="22" width="100" height="20">
        <property name="net.sf.jasperreports.export.html.class" value="TEST"/>
        <property name="net.sf.jasperreports.export.html.id" value="ID"/>
    </reportElement>
    <textElement markup="html"/>
    <textFieldExpression><![CDATA[($F{field1}]]></textFieldExpression>
</textField>

在iReport中,您可以通过选择字段来添加它们,然后在属性窗口中单击Properties expressions旁边的省略号按钮。 enter image description here

要在导出的报告中包含指向css文件的链接,您需要在导出之前设置JRHtmlExporterParameter.HTML_HEADER参数的值。请注意,参数不是HTML意义上的标题(head标记的内容),而是导出的HTML报告的标题。这意味着它是在包含报告之前首先放在导出的报告中的内容。 Jasper Reports使用的默认值为:

<html>
<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <style type="text/css">
    a {text-decoration: none}
  </style>
</head>
<body text="#000000" link="#000000" alink="#000000" vlink="#000000">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td width="50%">&nbsp;</td><td align="center">

因此,您需要通过添加以下内容来修改此项以包含指向样式表的链接:

<link rel="stylesheet" type="text/css" href="<cssfile you want to point to>" />

在适当的地方,我认为是在head标签内,但如果没有移动到适当的区域。所以java代码看起来像是:

JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, 
    "<html>"+
    "<head>"+
    "  <title></title>"+
    "  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>"+
    "  <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jasper.css\" />"+
    "  <style type="text/css">"+
    "    a {text-decoration: none}"+
    "  </style>"+
    "</head>"+
    "<body text="#000000" link="#000000" alink="#000000" vlink="#000000">"+
    "<table width="100%" cellpadding="0" cellspacing="0" border="0">"+
    "<tr><td width="50%">&nbsp;</td><td align="center">");
exporter.exportReport();