Voglio mostrare un'immagine su un report jasper. Ho il seguente sul .jrxml:Come mostrare un'immagine sul report jasper?
<image>
<reportElement x="181" y="0" width="209" height="74"/>
<imageExpression class="java.lang.String"><![CDATA["logo.jpg"]]></imageExpression>
</image>
L'immagine logo.jpg si trova nella stessa directory del .jrxml. Mettendo semplicemente che non ha funzionato per me. Ho cercato su google un po 'e ho scoperto che il report jasper considera cosa ho messo su .jrxml come percorso relativo alla directory JVM e che per cambiarlo ho bisogno di passare come parametro "REPORT_FILE_RESOLVER" a FileResolver che restituisce il file. Così, ho fatto quanto segue nel mio .java (si trova nella stessa posizione della .jrxml e l'immagine)
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);
...
Che dovrebbe restituire il file atteso, ma ho ancora ottenere un
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)
...
Che cosa sto facendo di sbagliato?
Grazie!
See: http://stackoverflow.com/a/39320863/59087 –