Ich möchte ein Bild auf einem Jaspis-Bericht zeigen. Ich habe folgendes auf dem .jrxml:Wie zeige ich ein Bild auf Jaspis-Bericht?
<image>
<reportElement x="181" y="0" width="209" height="74"/>
<imageExpression class="java.lang.String"><![CDATA["logo.jpg"]]></imageExpression>
</image>
Das Bild logo.jpg im selben Verzeichnis wie die .jrxml ist. Indem ich nur gesagt habe, dass es für mich nicht funktioniert hat. Ich habe ein wenig gegoogelt und herausgefunden, dass jasper report berücksichtigt, was ich auf die .jrxml als relativen Pfad zum JVM-Verzeichnis lege und dass ich als Parameter "REPORT_FILE_RESOLVER" einen FileResolver übergeben muss, der die Datei zurückgibt. Also, habe ich folgendes in meine .java (in gleichen Stelle wie die .jrxml und das Bild befindet)
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);
...
die die erwartete Datei zurückgeben sollte, aber ich bekomme immer noch eine
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)
...
Was mache ich falsch?
Danke!
<imageExpression class="java.lang.String">
<![CDATA[$P{REPORTS_DIR} + "/images/logo.jpg"]]>
</imageExpression>
See: http://stackoverflow.com/a/39320863/59087 –