gpt4 book ai didi

java - .prpt 报告从 java 运行

转载 作者:行者123 更新时间:2023-12-01 23:18:48 30 4
gpt4 key购买 nike

之前我使用 Pentaho 报告,我可以使用 pentaho 报告设计器创建报告并将 .prpt 文件部署到 BI 服务器中。它会工作得很好。

现在我正在寻找一种解决方案,可以将 .prpt 文件放入 Java 程序中并像 jasper 报告(.jrxml 文件)一样运行。因为我需要将 Pentaho 报告与我的 Web 应用程序集成。

我可能会问一个非常基本的问题。但我没有找到这方面的正确文件。请指出一些正确的位置,示例代码将会有所帮助。

最佳答案

由于接受的答案中的第一个链接似乎不再起作用,正在寻找示例的人可能会发现这个更有用:https://github.com/pentaho/pentaho-reporting/blob/master/engine/samples/source/org/pentaho/reporting/engine/classic/samples

某些示例中的代码有点复杂,因此我发布了自己的报告生成器类,其中仅包含生成 PDF 报告的基本要素:


公共(public)类报告生成器{



  public byte[] generateReport(byte[] templateBytes, Map<String, Object> params) throws Exception {
ClassicEngineBoot.getInstance().start();

MasterReport reportData = loadTemplateDefinition(templateBytes);
addParametersToReport(params, reportData);
byte[] reportBytes = generateReport(reportData);

return reportBytes;
}

private MasterReport loadTemplateDefinition(byte[] templateBytes) throws Exception {
ResourceManager resourceManager = new ResourceManager();
Resource templateResource = resourceManager.createDirectly(templateBytes, MasterReport.class);
return (MasterReport) templateResource.getResource();
}

private void addParametersToReport(Map<String, Object> params, MasterReport reportData) {
if (params != null) {
for (String key : params.keySet()) {
reportData.getParameterValues().put(key, params.get(key));
}
}
}

private byte[] generateReport(MasterReport reportData) throws ReportProcessingException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfOutputProcessor outputProcessor = new PdfOutputProcessor(reportData.getConfiguration(), outputStream, reportData.getResourceManager());

AbstractReportProcessor reportProcessor = null;
try {
reportProcessor = new PageableReportProcessor(reportData, outputProcessor);
reportProcessor.processReport();
} finally {
if (reportProcessor != null) {
reportProcessor.close();
}
}

return outputStream.toByteArray();
}
}

generateReport 方法在 templateBytes 参数中接受 .prpt 文件的内容,并在 params 参数中接受生成报告所需的参数列表。

它返回的字节数组包含生成的 PDF 报告的内容。

此外,如果您在应用程序中使用 Maven,那么包含所有必要的依赖项也很重要。我使用了在这里找到的列表:http://wiki.pentaho.com/display/Reporting/How+to+integrate+report+designer+to+your+web+application ,其中我将所有与pentaho相关的库版本替换为版本6.1.0.1-196

关于java - .prpt 报告从 java 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840764/

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