从Pentaho生成PDF .prpt报告文件在Java中 - 依赖性混乱

时间:2011-08-23 13:27:14

标签: java maven pentaho

任何人都可以帮我开始在maven环境中使用java从Pentaho .prpt文件生成PDF吗?

我有Pentaho Reporting 3.5 for Java Developers一书,我正在尝试一个例子,基本上是:

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文件。

有谁知道我可以在哪里获得MasterReport?和/或我认为需要哪种版本的各种pentaho和相关的罐子?

更新:通过使用JFreeReport.class而不是MasterReport.class(请参阅下面的乱码注释),我可以达到解析异常的目的:

这是我的pom片段:

    <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)

1 个答案:

答案 0 :(得分:3)

您使用的是绝对过时的报告引擎版本。几年前我们停止使用名称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自动下载。