Search code examples
unicodejasper-reports

How can I replace a character with an unicode image?


How can I replace a - character in a text which comes from a data base into jasper field, with an image? The goal is as the illustration bellow:

goal

Something like: $F{KN_Zusatzinfo_DV_Einleitungstext}.replaceAll("- ", "[\\x254]") where the x254 is ascii code for a red square.

But the above code writes the ascii code as is in the text and does not produce the image.


Solution

  • The correct syntax to render a unicode symbol is \uXXXX

    For example this expression:

    $F{listItem}.replaceAll("-", "\u2588")
    

    Will render this

    Output

    Now you like the dot to be red so we need to apply some style, lets set markup="html" on textElement and change the replace to this

    $F{listItem}.replaceAll("-", "<font color=\"red\">\u2588</font>")
    

    It will render:

    Red dots

    Note: You need to be careful with regex in replaceAll, I probably would us ^-, hence starts with - (to avoid replacing other - in text), furthermore the normal way would be to just add a red rectangle element on each row. Also take care of font-extensions if you are exporting to pdf, so that your font is render correctly