4

5.0.1では、REPORT_FILE_RESOLVERは非推奨になり、サンプルの実装:http: //jasperreports.sourceforge.net/sample.reference/tableofcontents/index.html#fileresolver

JasperReportsContextに切り替えることを強くお勧めします。

JasperReportsContextの使用例は見つかりませんでした。私の知る限り、FileResolverのゲッターとセッターを持つ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のExtensionsRegistryFactoryをカスタマイズします。

  2. ExtensionRegistry呼び出しを作成しますResourceFileResolveRepositoryExtensionRegistry

  3. ResourceFileResolveRepositoryExtensionRegistryで、ファイルリゾルバーを処理するためにサービスをレジストリ化できます

(*)ファイルリゾルバーだけでなく、StreamRepositoryServiceが行うことは何でもできます

あなたは私のサンプルhttps://bitbucket.org/idplugin/th.motive.jasperreport.extendから完全に参照します

于 2017-05-15T07:32:12.070 に答える