2

我需要生成如下所示的报告:

在此处输入图像描述

我在 NetBeans 中使用 swing 设计了一个 GUI 来输入详细信息:

在此处输入图像描述

我使用 jFreeChart 生成的绘图:

  JFreeChart chart = ChartFactory.createXYLineChart(
"Hysteresis Plot", // chart title
"Pounds(lb)", // domain axis label
"Movement(inch)", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
);

输出:

在此处输入图像描述

我在网上搜索并读到我可以使用 iText 或 JasperReports 或 DynamicReports(基于 Jasper Report)

http://www.dynamicreports.org/getting_started.html#step9

我发现使用动态报告更容易。我的问题是——我可以将 DynamicReports 用于我的目的吗(我想——是的,看看示例报告)如果是,那么我如何将我的 jFreeChart 导出到报告中。

请帮忙,因为我没有太多时间来完成这个项目。

谢谢

4

1 回答 1

1

您可以直接在 DynamicReports 而不是 JFreeChart 中创建图表。使用 DynamicReports XYLineChartReport 组件来执行此操作。请参阅http://www.dynamicreports.org/examples/xylinechartreport.html上的示例代码。

如果要使用 JFreeChart 输出,请将图表导出为图像,然后使用以下命令将该图像包含在报告中cmp.image()

// Create the chart.
JFreeChart chart = ChartFactory.createXYLineChart(
    "Hysteresis Plot", // chart title
    "Pounds(lb)", // domain axis label
    "Movement(inch)", // range axis label
    dataset, // data
    PlotOrientation.VERTICAL, // orientation
    false, // include legend
    true, // tooltips
    false // urls
);

// Export the chart to an image.
BufferedImage image = chart.createBufferedImage( 300, 300);

report()
    .title(cmp.text("XYZ HOSPITAL"))
    .columns(fieldNameColumn, fieldValueColumn)
    .summary(
        cmp.verticalList()
            .add(cmp.text("HYSTERISIS PLOT"))
            .add(cmp.text("A brief description of what this plot signifies"))
            .add(cmp.image(image))  // Add the exported chart image to the report.
            .add(cmp.text("REMARKS"))
    )
    .setDataSource(createDataSource())
    .toPDF(outputStream);
于 2013-02-21T09:21:16.437 回答