Je souhaite incorporer une image dans mon fichier JasperReports jrxml. J'ai cette structure de répertoire.
Tomcat Root
webapps
reports
-->images
--> company_logo.jpg
-->reports
-->sample.jasper
-->WEB-INF
-->classes
Et j'ai essayé de le faire en pensant que cela est relatif à la racine de contexte de mes rapports
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="Java.lang.String">
<![CDATA["images/company_logo.jpg"]]>
</imageExpression>
</image>
..et cela aussi
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="Java.lang.String">
<![CDATA["/images/company_logo.jpg"]]>
</imageExpression>
</image>
mais il indique toujours qu’une erreur s’est produite lors du chargement d’octets à partir de l’emplacement JRLoader
.
J'ai essayé de faire ça et ça marche, mais je ne comprends pas trop pourquoi mes deux premiers essais ne fonctionnent pas.
Est-ce vraiment ainsi que vous intégrez des images dans JasperReports? Avez-vous besoin de fournir le chemin entier? Je pense qu'il devrait y avoir une page relative Quelque chose.
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="Java.lang.String">
<![CDATA["http://localhost:8080/reports/images/company_logo.jpg"]]>
</imageExpression>
</image>
Je suis un peu perplexe sur la bonne façon.
<![CDATA["../images/company_logo.jpg"]]>
devrait faire l'affaire. Le chemin est relatif à votre fichier .jasper.
Vous devez créer un paramètre PARAMETER de type String appelé par exempleCONTEXTE, et depuis votre JSP, envoyez le contexte de servlet:
parameters.put("CONTEXT",this.getServletContext().getRealPath("/"));
Maintenant, dans votre rapport, vous utilisez le paramètre:
$P{CONTEXT}.toString()+"reports/images/logo.png"
Il en va de même pour les sous-rapports ou autres ressources Web, par exemple:
$P{CONTEXT}.toString()+"reports/OrdenCompraAlmacen_Items.jasper"
J'espère que cela est utile.
Avec .jrxml lorsque vous utilisez un chemin absolu avec image, lorsque le package jar filr sera déployé, vous obtiendrez:
Java.lang.IllegalArgumentException: name
at Sun.misc.URLClassPath$Loader.findResource(Unknown Source) ~[na:1.8.0_121]
at Sun.misc.URLClassPath.findResource(Unknown Source) ~[na:1.8.0_121]
at Java.net.URLClassLoader$2.run(Unknown Source) ~[na:1.8.0_121]
at Java.net.URLClassLoader$2.run(Unknown Source) ~[na:1.8.0_121]
Essayez de charger la ressource en tant que:
<imageExpression><![CDATA[this.getClass().getResourceAsStream("/img/mdg_logo.jpg")]]></imageExpression>
il vaut parfois mieux utiliser File.separator: "ima" + File.separator + "logo.jpg"
Utilisez l'expression ci-dessous dans l'image Expression of jasper report IDE sur les propriétés de l'image du fichier jrxml et du chemin de l'image relative.
En conséquence, changez le chemin w.r.t
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()