告别低效报表生成:使用 sigedi/jasper-report-bundle 提升效率

我们的项目使用symfony架构建,需要生成各种类型的报表,例如pdf、csv等。起初,我们尝试使用一些通用的报表生成库,但这些库的配置复杂,生成的报表样式难以定制,而且效率不高,尤其是在处理大量数据时,响应速度非常慢。这严重影响了用户体验。

为了解决这个问题,我开始寻找更专业的解决方案。最终,我发现了 sigedi/jasper-report-bundle 这个Symfony bundle。它集成了 Jaspersoft REST v2 客户端,能够轻松地与 Jaspersoft Server 进行交互,从而生成各种类型的报表。 这个bundle的优势在于它简化了与Jaspersoft Server的交互过程,并提供了Symfony友好的接口

安装 sigedi/jasper-report-bundle 非常简单,只需要使用composer

composer require sigedi/jasper_report_bundle

安装完成后,bundle会自动注册,并创建配置文件 jasper-report.yaml (位于 config/packages 目录下)以及相应的 .env 文件条目。我们需要在 jasper-report.yaml 中配置 Jaspersoft Server 的地址、用户名、密码和组织ID:

sigedi_jasper_report:    host:      'http://localhost:8080/jasperserver'    username:  '%env(SIGEDI_JASPER_REPORT_USERNAME)%'    password:  '%env(SIGEDI_JASPER_REPORT_PASSWORD)%'    org_id:    '%env(SIGEDI_JASPER_REPORT_ORGID)%'    timeout:   50

在 .env 文件中设置相应的环境变量:

SIGEDI_JASPER_REPORT_USERNAME=jasperadminSIGEDI_JASPER_REPORT_PASSWORD=jasperadminSIGEDI_JASPER_REPORT_ORGID=

配置完成后,我们就可以在Symfony控制器中直接使用 ReportService 来生成报表了。由于bundle支持自动注入,我们可以直接在控制器中使用它:

use SymfonyComponentHttpFoundationRequest;use SigediJasperReportBundleReportService;public function reportAction(Request $request, ReportService $reportService){    $report = $reportService->runReport('/reports/TestReport', 'pdf');    $response = new Response($report);    $response->headers->set('Content-type', 'application/pdf');    $response->headers->set('Content-Disposition', 'inline; filename=Report.pdf');    $response->headers->set('Cache-Control', 'must-revalidate');    return $response;}

这段代码非常简洁,它调用 runReport 方法生成PDF报表,然后将其作为响应返回给客户端。sigedi/jasper-report-bundle 还提供了其他配置选项,例如超时设置,可以根据实际需求进行调整。

使用 sigedi/jasper-report-bundle 后,我们显著提升了报表生成的效率。以前处理大量数据时,报表生成需要几分钟甚至更长时间,现在只需要几秒钟就能完成。报表样式也更加美观,易于定制。更重要的是,代码变得更加简洁易懂,易于维护。

总而言之,sigedi/jasper-report-bundle 是一个非常优秀的Symfony bundle,它极大地简化了报表生成的流程,并显著提高了效率。如果你正在寻找一种高效、便捷的报表生成方案,强烈推荐你尝试一下。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享