Java报告库包含在网页中

我正在研究Grails应用程序,我需要显示一些报告,并允许用户以最常见的格式(PDF,
XML …)导出它们.

我不想将SQL查询嵌入到报表定义中,报表逻辑已集成到Grails服务中,我正在寻找的报表库应该在没有真实数据源的数据集(可能是地图列表)上工作.

我使用Jasper Reports和iReport进行测试,它们与Grails一起用于导出功能(PDF,XML,HTML).但我很难将它们包含在我的页面模板中.我想在报告html中有我的页眉,页脚,导航菜单和过滤器.

我想到的唯一解决方案是使用iframe,但我不喜欢这么多.

贾斯珀报告可以解决我的要求吗?你知道任何其他Java报告库,它允许我在我的HTML正文中包含报告吗?

最佳答案 您可以使用
g:include tag来包含控制器的响应:

<g:include controller="myJasper" action="showReport" 
    params="[foo: 'bar', baz: 42]" />

使用Grails Jasper plugin,您的控制器将包含如下代码:

import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat;
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef;

class MyJasperController {
    def jasperService

    def showReport = {
        def reportDef = new JasperReportDef(
            name: 'your_report.jasper', 
            parameters: params,
            fileFormat: JasperExportFormat.HTML_FORMAT)

        def report = jasperService.generateReport(reportDef)
            .toByteArray().toString("UTF-8")

        render report
    }
}
点赞