gpt4 book ai didi

java - 如何将 HtmlComponent 添加到 JasperDesign

转载 作者:行者123 更新时间:2023-11-30 10:32:43 25 4
gpt4 key购买 nike

我通过各种搜索设法将 HtmlComponent 添加到我的项目中。

我的下一个问题是我不知道如何将它添加到 JasperDesign。我根本找不到任何方法将我的 HtmlComponent 添加到 JasperDesign(甚至不能通过组等)。

我使用 Jasper 5.6.1 并设法从 iReport 工具 (5.6.0) 中获取 HtmlComponent jar (5.0.1)。

我的最终目的是能够在我的报告中包含一个 HTML 表格。我知道这是不可能的,但也许 HTML 组件是最有趣的事情。这样,表格的图像就会出现在我的报告中,这没问题。

这是我当前的代码

private JasperDesign getTable(String html, JasperDesign jasperDesign) {
HtmlComponent table = new HtmlComponent();
JRDesignExpression expression = new JRDesignExpression();
expression.setText(html.replace("\n", ""));
table.setHtmlContentExpression(expression);
JRDesignGroup group = new JRDesignGroup();
group.setName(TABLE_GROUP_PREFIX);
JRDesignBand groupHeader = new JRDesignBand();
groupHeader.setHeight(200);
groupHeader.setSplitType(SplitTypeEnum.IMMEDIATE);
groupHeader.addElement(table);
((JRDesignSection) group.getGroupHeaderSection()).addBand(groupHeader);

return jasperDesign;
}

groupHeader.addElement(table) 行失败,因为 HtmlComponent 不是元素,而是组件。

最佳答案

要将组件添加到 JRDesign,您需要将其包装在 JRDesignComponentElement

JRDesignComponentElement ce = new JRDesignComponentElement(design);
ce.setComponentKey(new ComponentKey("http://jasperreports.sourceforge.net/htmlcomponent", "hc", "html"));
ce.setComponent(table);

完整示例

//Create the design
JasperDesign design = new JasperDesign();
design.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL); //We will run with no data
design.setName("Html test");
//Add a title band
JRDesignBand title = new JRDesignBand();
title.setHeight(100);
design.setTitle(title);

//Create our component
HtmlComponent hc = new HtmlComponent();
JRDesignExpression expression = new JRDesignExpression();
expression.setText("\"<b>Hello</b> world\"");
hc.setHtmlContentExpression(expression);

//Wrap it in a design componenent
JRDesignComponentElement ce = new JRDesignComponentElement(design);
ce.setComponentKey(new ComponentKey("http://jasperreports.sourceforge.net/htmlcomponent", "hc", "html"));
ce.setComponent(hc);
ce.setHeight(100);
ce.setWidth(100);
title.addElement(ce);

//Compile the design
JasperReport report = JasperCompileManager.compileReport(design);

//Generate the print (passing no datasource, empty)
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String,Object>());

//Export to pdf
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(print));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("pdf/htmlComponent.pdf"));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();

输出

result

Hello world 的代码很多,用 jrxml 做报告通常更快

关于java - 如何将 HtmlComponent 添加到 JasperDesign,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com