How/Can I use base64 as image source in a Jasper Report template?

后端 未结 3 1851
南旧
南旧 2020-12-06 12:33

So in my jrxml file I have the following:


Then I reference it in:

3条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-06 13:19

    Passing parameter as String makes jasper report believe its a absolute file path, so you need another class. The most obvious would be java.awt.Image or java.io.InputStream.

    I choose java.io.InputStream since this will require less code, so the first thing we need to do now is to decode the base64 image String.

    There are several Base64 class that will do the job, I choose the org.apache.commons.codec.binary.Base64 since apache commons-codec.jar is already distributed with jasper report (dependencies). The decode will give us a byte array byte[], so now we need only to add a ByteArrayInputStream

    The java code would be:

    InputStream stream = new ByteArrayInputStream(Base64.decodeBase64(smileyfaceimage.getBytes()));
    

    Time to pass it into the jasper report imageExpression

    
    
        
    
    

    Hope for the best and press the preview:

    Important notice: The smileyfaceimage needs to be without:data:image/png;base64,

    EDIT: The problem of the OP (comments) was that with old jasper report lib (3.0) you need to specify the class in the imageExpression @see class="java.io.InputStream" the post has been update consequently since this works also in 6.0.

提交回复
热议问题