1

我创建了一个碧玉报告。但现在我需要在碧玉报告中放置徽标,我将报告和徽标放在同一个文件夹中,但我无法运行报告,它说

   net.sf.jasperreports.engine.JRException: Byte data not found at : kh_logo.jpg

如果我给出完整路径然后 jar 文件会产生问题,那么在 jar 文件报告中找不到该徽标图像,我正在使用 net beans 请帮助

 I am using netbeans and i am placing report and logo in the src folder , but when I 
click on print report it is not able to find that logo
4

2 回答 2

1

我发现这个问题有两种可能的解决方案:

解决方案 1:使用相对路径。

使用绝对路径可能不适用于您的服务器环境。因此,最好使用相对路径。最好将 'kh_logo.png' 文件与 .jrmxl 或 .jasper 文件放在同一文件夹中,并使用以下方式引用它:

<image>
            <reportElement uuid="generated_uuid" x="8" y="9" width="170" height="51"/>
            <imageExpression><![CDATA["kh_logo.png"]]></imageExpression>
</image>

如果这不起作用......

解决方案 2:使用文件解析器

此解决方案仅用于 Java 代码。在这里,您将自己的文件解析器作为参数传递给报告。像这样。。

 ///Jasper Resolver
       FileResolver fileResolver = new FileResolver() {

        @Override
        public File resolveFile(String fileName) {
           URI uri;
           try {
             uri = new URI(this.getClass().getResource(fileName).getPath());
             return new File(uri.getPath());
           } catch (URISyntaxException e) {
             e.printStackTrace();
             return null;
           }
       }
   };
       parameters.put("REPORT_FILE_RESOLVER", fileResolver);

然后像上面那样引用它。

希望这可以帮助某人。

于 2014-02-16T12:31:02.923 回答
1

您的图像需要位于类路径上的文件夹中并以相对方式引用。

于 2012-06-11T12:45:50.420 回答