我对JasperReports API有疑问。
我将html组件添加到我的报告中(通过iReport 设计器 5.0.4)。对jasper文件的编译运行没有错误。
当我尝试创建报告时,我从JasperPrint 对象中得到null(方法返回null而不是JasperPrint对象。createReport(getReportAsByteArray(), parameters, dataSource);
getReportAsByteArray()
- 从我的数据库返回 jasper 报告文件)。
Html组件(在iReport中)与字符串参数连接,我将正确的字符串参数放入parameters
HashMap<>。我已经尝试在 html 内容 exp 中编写 html 文本。(html 组件属性)。它没有用。
早些时候一切都很好,当 jasper 文件没有html组件时,我可以创建报告并导出为 PDF。
现在我可以在我的iReport预览中看到生成的报告(带有html组件)(它可以工作),但是当我通过我的 java bean 填充我的报告时 - 它不起作用。(只有一个对象的 jasper 文件 - html组件 - 也不起作用)。
.jrxml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="raport_test_1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="5a918503-735f-4812-bbd1-f4017cca4b0f">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="TEXT_CONTENT" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<componentElement>
<reportElement uuid="e9907391-3e2f-45c9-af15-b7a60f7a3312" x="0" y="0" width="555" height="125"/>
<hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RealSize" horizontalAlign="Left" verticalAlign="Middle">
<hc:htmlContentExpression><![CDATA[$P{TEXT_CONTENT}]]></hc:htmlContentExpression>
</hc:html>
</componentElement>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
以及应该返回报告pdf文件的字节数组的方法
Map<String, Object> parameters = new HashMap<>();
parameters.put("TEXT_CONTENT","sample text<br/>");
List<Data> list= getList();
if (list == null) {
list = new ArrayList<>();
}
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint printableReport = createReport(getReportFileAsByteArray(), parameters, dataSource);
if (printableReport != null) {
try {
return JasperExportManager.exportReportToPdf(printableReport);
} catch (JRException ex) {
//
}
}
return null;
感谢您的任何建议!