4

在 5.0.1 中,REPORT_FILE_RESOLVER 已被弃用,示例实现:http: //jasperreports.sourceforge.net/sample.reference/tableofcontents/index.html#fileresolver

声明强烈建议切换到 JasperReportsContext。

我找不到 JasperReportsContext 使用的任何示例。据我所知,我应该寻找具有 FileResolver getter 和 setter 的 LocalJasperReportsContext。

我在问,它必须怎么做?

4

2 回答 2

8

浏览资源后,我找到了解决方案。

JRXML imageExpression 标签:

<band height="79" splitType="Stretch">
<image scaleImage="FillFrame" isLazy="true" onErrorType="Blank">
    <reportElement uuid="3340bf0f-8471-45e9-8ea4-bdf44a7c0e68" x="0" y="0" width="150" height="69"/>
    <imageExpression class="java.io.File"><![CDATA["image.jpg"]]></imageExpression>
</image>

Java代码片段:

FileResolver resolver = new FileResolver() {
@Override
public File resolveFile(String filename) {
    return new File("/some/path");
}
};


InputStream jasperfile = getClass().getClassLoader().getResourceAsStream("file.jasper");

LocalJasperReportsContext ctx = new LocalJasperReportsContext(DefaultJasperReportsContext.getInstance());
ctx.setClassLoader(getClass().getClassLoader());
ctx.setFileResolver(resolver);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperfile);

JasperFillManager fillmgr = JasperFillManager.getInstance(ctx);
JasperExportManager exmgr = JasperExportManager.getInstance(ctx);

JasperPrint jasperPrint = fillmgr.fill(jasperReport, parameters, beanColDataSource);
ByteArrayOutputStream pdfBytes = new ByteArrayOutputStream();
exmgr.exportToPdfStream(jasperPrint, pdfBytes);

您必须创建一个新上下文并将其传递给 JasperFillManager 和 JasperExportManager。

于 2013-02-22T11:59:28.620 回答
0

使用扩展是另一种方式。

  1. 在 jasperreports_extension.properties net.sf.jasperreports.extension.registry.factory.repository.th.resource.file.resolve=th.motive.jasper.report.extension.factory.ResourceFileResolveRepositoryExtensionsRegistryFactory 上注册一个自定义 ExtensionsRegistryFactory

  2. 创建 ExtensionRegistry 调用 ResourceFileResolveRepositoryExtensionRegistry

  3. 在 ResourceFileResolveRepositoryExtensionRegistry 你可以注册你的服务来处理文件解析器

(*) 它不仅仅是文件解析器,你可以做任何 StreamRepositoryService 做的事情

您从我的示例https://bitbucket.org/idplugin/th.motive.jasperreport.extend中完整引用

于 2017-05-15T07:32:12.070 回答