web-dev-qa-db-fra.com

URL d'expression d'image dans Jasper Reports

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.

20
Mark Estrada

<![CDATA["../images/company_logo.jpg"]]> devrait faire l'affaire. Le chemin est relatif à votre fichier .jasper.

29
Giorgos Dimtsas

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.

11
Manuel Gaytan

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>
4
pdorgambide

il vaut parfois mieux utiliser File.separator: "ima" + File.separator + "logo.jpg"

2

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()
0
satish hiremath