在 Java 中从 Pentaho .prpt 报告文件生成 PDF - 依赖性混淆
Posted
技术标签:
【中文标题】在 Java 中从 Pentaho .prpt 报告文件生成 PDF - 依赖性混淆【英文标题】:Generating PDF from Pentaho .prpt report file in Java - dependencies confusion 【发布时间】:2011-08-23 13:27:13 【问题描述】:谁能帮助我开始在 maven 环境中使用 java 从 Pentaho .prpt 文件生成 PDF?
我有面向 Java 开发人员的 Pentaho Reporting 3.5 这本书,我正在尝试从那里尝试一个示例,基本上:
ResourceManager manager = new ResourceManager();
manager.registerDefaults();
Resource resource = manager.createDirectly(reportURL, MasterReport.class);
MasterReport report = (MasterReport) resource.getResource();
PdfReportUtil.createPDF(report, outputStream);
我的问题是我找不到 MasterReport.class。
我一直在尝试从 Pentaho maven 存储库 (http://repo.pentaho.org/artifactory/repo) 中获取依赖项,但我仍然不确定我是否有正确版本的 jar - 但我找不到任何文档或其他示例继续进行,所以这都是反复试验。这本书没有列出任何版本,尽管它确实说明了使用的 jar 文件。
有人知道我在哪里可以获得 MasterReport 吗?和/或我似乎需要各种 pentaho 和相关 jar 的哪些版本?
更新:通过使用 JFreeReport.class 而不是 MasterReport.class(请参阅下面我的乱码 cmets),我可以得到解析异常:
这是我的 pom sn-p:
<dependency>
<groupId>pentaho</groupId>
<artifactId>pentaho-reporting-engine-classic</artifactId>
<version>0.8.9.8</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>pentaho-reporting-engine-classic-ext</artifactId>
<version>0.8.9.8</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>libloader</artifactId>
<version>0.3.7</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>libxml</artifactId>
<version>0.9.11</version>
</dependency>
<dependency>
<groupId>pentaho</groupId>
<artifactId>libformula</artifactId>
<version>0.1.18</version>
</dependency>
<dependency>
<groupId>jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.12</version>
</dependency>
<dependency>
<groupId>jfree</groupId>
<artifactId>jcommon-serializer</artifactId>
<version>0.2.0</version>
</dependency>
这是一个例外:
org.jfree.resourceloader.ResourceCreationException: Unable to parse the document
at org.jfree.xmlns.parser.AbstractXmlResourceFactory.create(AbstractXmlResourceFactory.java:215)
at org.jfree.resourceloader.ResourceManager.performCreate(ResourceManager.java:455)
at org.jfree.resourceloader.ResourceManager.create(ResourceManager.java:383)
at org.jfree.resourceloader.ResourceManager.create(ResourceManager.java:329)
at org.jfree.resourceloader.ResourceManager.createDirectly(ResourceManager.java:315)
【问题讨论】:
我在 repository.pentaho.org 找到了另一个 maven 存储库 - 如果我有任何乐趣,我会试一试并发布更新。 我敢肯定,这是一个充满伤害的世界。我猜您可以使用 getClass().getResourceAsStream() 或 new URL(reportUrl).openConnection() 等打开 reportUrl? 是的,报告文件参考很好,充满了看似合理的乱码二进制文本。 【参考方案1】:您使用的是绝对过时的报告引擎版本。几年前我们停止使用 JFreeReport 这个名称。
当前版本是 3.8,而您似乎使用的是 0.8.9。不要这样做,否则您将陷入痛苦和痛苦的境地,因为所有现代工具(例如报表设计器)都不适合您。
“Pentaho Reporting 3.5”一书至少需要 Pentaho Reporting 3.5。 ;)
Pentaho 在 repository.pentaho.org 上运行一个公共 Maven 存储库,其中包含最新的 pentaho 报告人工制品。使用此链接查看最新版本的 POM 信息:
http://repository.pentaho.org/artifactory/webapp/browserepo.html?pathId=pentaho%3Apentaho-reporting-engine%2Fpentaho-reporting-engine-classic-core%2F3.8.1-GA%2Fpentaho-reporting-engine-classic-core-3.8.1-GA.pom
您只需要包含经典引擎核心以及最终可能需要的任何扩展项目。库和所有外部依赖项应该由 Maven 自动下载。
【讨论】:
谢谢,这正是我要找的。span>以上是关于在 Java 中从 Pentaho .prpt 报告文件生成 PDF - 依赖性混淆的主要内容,如果未能解决你的问题,请参考以下文章
Pentaho 5.3 - 如何读取 PRPT 文件中的属性
在 Pentaho BI 服务器中使用 PDI 转换作为报表参数的数据源