Java 如何将HtmlComponent添加到JasperDesign
我通过各种搜索将Java 如何将HtmlComponent添加到JasperDesign,java,jasper-reports,Java,Jasper Reports,我通过各种搜索将HtmlComponent添加到我的项目中 我的下一个问题是,我不知道如何将它添加到JasperDesign中。 我简直找不到任何方法将我的HtmlComponent添加到JasperDesign(甚至不通过组等) 我使用Jasper5.6.1,并设法从iReport工具(5.6.0)中获取HTMLComponentJAR(5.0.1) 我的最终目的是能够在我的报告中有一个HTML表。我知道这在任何方面都是不可能的,但也许,HTML组件将是最有趣的事情。这样,表格的图像就会出现在
HtmlComponent
添加到我的项目中
我的下一个问题是,我不知道如何将它添加到JasperDesign
中。
我简直找不到任何方法将我的HtmlComponent
添加到JasperDesign
(甚至不通过组等)
我使用Jasper5.6.1,并设法从iReport工具(5.6.0)中获取HTMLComponentJAR(5.0.1)
我的最终目的是能够在我的报告中有一个HTML表。我知道这在任何方面都是不可能的,但也许,HTML组件将是最有趣的事情。这样,表格的图像就会出现在我的报告中,这是可以的
这是我当前的代码
行
groupHeader.addElement(table)
失败,因为HtmlComponent不是元素,而是组件。要将组件添加到JRDesign
中,需要将其包装在
完整示例
//创建设计
JasperDesign=新JasperDesign();
设计。设置WhenNodeType(WhenNodeType枚举。所有章节无详细信息)//我们将在没有数据的情况下运行
design.setName(“Html测试”);
//添加标题栏
JRDesignBand title=新的JRDesignBand();
标题.设置高度(100);
设计。设置标题(标题);
//创建我们的组件
HtmlComponent hc=新的HtmlComponent();
JRDesignExpression=新的JRDesignExpression();
expression.setText(“\'Hello world\”);
hc.setHtmlContentExpression(表达式);
//将其包装在设计组件中
JRDesignComponentElement ce=新的JRDesignComponentElement(设计);
ce.setComponentKey(新的ComponentKey(“http://jasperreports.sourceforge.net/htmlcomponent","hc,"html",;
ce.setComponent(hc);
ce.设置高度(100);
ce.设置宽度(100);
标题.附录(ce);
//编写设计
JasperReport report=jaspecompilemanager.compileReport(设计);
//生成打印(不传递数据源,为空)
JasperPrint print=JasperFillManager.fillReport(report,newhashmap());
//导出为pdf
JRPdfExporter exporter=新的JRPdfExporter();
exporter.setExporterInput(新的SimpleExporterInput(打印));
exporter.setExporterOutput(新的SimpleOutputStreamExporterOutput(“pdf/htmlComponent.pdf”);
SimplePDExporterConfiguration配置=新的SimplePDExporterConfiguration();
exporter.setConfiguration(配置);
出口商。出口报告();
输出
Hello world的大量代码,用jrxml编写报告通常会更快post@AlexK,我无法使用提供的链接,因为我的报告是动态生成的。我不知道有多少表格将在我的报告提前。可能是0,也可能是10,绝对是我想要的。非常感谢你!现在我可以开始摆弄了:)。值得一提的是,您应该缩小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;
}
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();