我想在碧玉报告上显示图像.我在.jrxml上有以下内容:
<image>
<reportElement x="181" y="0" width="209" height="74"/>
<imageExpression class="java.lang.String"><![CDATA["logo.jpg"]]></imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)
图像logo.jpg与.jrxml位于同一目录中.只是说它对我不起作用.我google了一下,发现jasper报告考虑我放在.jrxml上作为JVM目录的相对路径,并且为了改变这一点,我需要传递一个返回文件的FileResolver作为"REPORT_FILE_RESOLVER"参数.所以,我在.java中做了以下内容(位于与.jrxml和图像相同的位置)
FileResolver fileResolver = new FileResolver() {
@Override
public File resolveFile(String fileName) {
return new File(fileName);
}
};
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("REPORT_FILE_RESOLVER", fileResolver);
...
Run Code Online (Sandbox Code Playgroud)
哪个应该返回预期的文件,但我仍然得到一个
net.sf.jasperreports.engine.JRException: Error loading byte data : logo.jpg
at net.sf.jasperreports.engine.util.JRLoader.loadBytes(JRLoader.java:301)
at net.sf.jasperreports.engine.util.JRLoader.loadBytesFromLocation(JRLoader.java:479)
at net.sf.jasperreports.engine.JRImageRenderer.getInstance(JRImageRenderer.java:180)
...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢!