2016-11-29 3 views
0

Ich versuche, Bild (Byte-Array) zu exportieren und im PDF-Format mit iReport anzuzeigen. Groovy-Code:Bild als Byte-Array in JasperReports exportiert

 InvoiceVO invoiceVO = new InvoiceVO() 
     invoiceVO.kms = 5 
     .............. 
     invoiceVO.image = currentUser.profile.image // byte array 

In iReport Ich verwende:

<image> 
     <reportElement x="2" y="7" width="143" height="32" uuid="df5cd1ab-e7a2-41a1-920d-6045db41cfc9"/> 
     <imageExpression><![CDATA[net.sf.jasperreports.engine.util.JRImageLoader.loadImage($F{image})]]></imageExpression> 
    </image> 

aber seine nicht funktioniert. Feld Bild ist vom Typ "java.lang.object" auch versucht "java.lang.byte". Der Platzhalter für den Bildausdruck wird leer angezeigt.

+0

'aber es ist nicht working' - Was bedeutet es, (habe einige Fehler, ...)? Was ist ein Typ von $ F {image}? –

+0

java.lang.object auch versucht java.lang.byte –

+0

Ich habe die Frage aktualisiert. Es wird leer im Bildplatzhalter angezeigt. –

Antwort

1

Verfahren net.sf.jasperreports.engine.util.JRImageLoader.loadImage (byte []) fehlt (veraltet) in Jasper API 6.x.

Sie sollten java.awt.Image Objekt an den Bericht übergeben.

Konvertieren von byte[] zu java.awt.Image kann in einer Kette erfolgen.

Java Code:

try (InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("images/smile.png")) { 
    params.put("smileImage", ImageIO.read(new ByteArrayInputStream(JRLoader.loadBytes(inputStream)))); 
} catch (JRException | IOException e) { 
    throw new RuntimeException("Failed to load image", e); 
} 

Die jrxml Datei:

<parameter name="logo" class="java.awt.Image"/> 
<summary> 
    <band height="150"> 
     <image > 
      <reportElement x="20" y="20" width="50" height="50"/> 
      <imageExpression><![CDATA[$P{smileImage}]]></imageExpression> 
     </image> 
+0

Arbeitete das erste Mal, vielen Dank Alex! – Hatley

Verwandte Themen