Comment puis-je utiliser base64 en tant que source de l'image dans une Jasper modèle de Rapport?

Donc dans mon fichier jrxml j'ai le texte suivant:

<parameter name="smileyfaceimage" class="java.lang.String"/>

Puis-je y faire référence dans:

<image scaleImage="FillFrame" onErrorType="Blank">
    <reportElement x="167" y="62" width="363" height="171" backcolor="#333333"/>
    <imageExpression class="java.lang.String"><![CDATA[$P{smileyfaceimage}]]></imageExpression>
</image>

N'est-ce pas exact?

J'ai essayé de la base64 à la fois avec et sans:

data:image/png;base64,

Voici l'image, je travaille avec

Comment puis-je utiliser base64 en tant que source de l'image dans une Jasper modèle de Rapport?

Ensuite, j'ai utilisé https://www.base64-image.de/ ou de tout site au hasard pour obtenir la chaîne base64. J'ai testé la chaîne qu'il produit et qu'il est valide.

Maintenant dans mon code;

  • définir la valeur d'une variable à la based64 chaîne
  • sur le modèle
    • définir le paramètre: <parameter name="smileyfaceimage" class="java.lang.String"/>
  • puis ajouter les données de l'image à la page:

    • <image scaleImage="FillFrame" onErrorType="Blank">
          <reportElement x="167" y="62" width="363" height="171" backcolor="#333333"/>
          <imageExpression><![CDATA[new java.io.ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($P{smileyfaceimage}.getBytes()))]]></imageExpression>
      </image>

Ai-je raté une étape?

OriginalL'auteur iCodeLikeImDrunk | 2015-11-06