2010-09-02 6 views
17

Je souhaite intégrer une image dans mon fichier jrxml JasperReports. J'ai cette structure de répertoire.URL d'expression d'image dans les rapports Jasper

Tomcat Root 
webapps 
    reports 
    -->images 
    --> company_logo.jpg 
    -->reports 
    -->sample.jasper 
    -->WEB-INF 
    -->classes 

Et j'ai essayé de faire cette réflexion que ce soit par rapport à mon contexte rapports racine

<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 dit toujours qu'il y avait une erreur de chargement octets à partir de l'emplacement JRLoader.

J'ai essayé de faire cela et cela fonctionne, mais je suis un peu confus pourquoi mes deux premiers essais ne fonctionne pas.

Est-ce vraiment ainsi que vous incorporez des images dans JasperReports? Avez-vous besoin de fournir le chemin complet? 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.

Répondre

24

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

+0

cela est correct! Merci –

+0

Un point à noter est que les noms de fichiers et les chemins sont sensibles à la casse! – venomrld

+1

Cela ne fonctionnait pas pour moi lorsque Spring compilait les fichiers de rapport Jasper à la volée. J'ai dû recourir à la technique décrite [ici] (http://stackoverflow.com/questions/5376725/using-ireport-with-a-relative-path) –

2

est parfois meilleure utilisation File.separtor: "ima" + File.separator + "logo.jpg"

9

Vous devez créer un paramètre de type chaîne appelée par exemple CONTEXTE et de votre JSP envoyer 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" 

la même demande de rapports sous ou autres nous b ressources, exemple:

$P{CONTEXT}.toString()+"reports/OrdenCompraAlmacen_Items.jasper" 

J'espère que c'est utile.

+0

Fonctionne comme un charme! – Nik

-2

Mettez votre image dans la structure suivante:

webapps 
    reports 
     -->reports 
      -->sample.jasper 
-->WEB-INF 
     -->classes 
      -->images 
       --> company_logo.jpg 

<imageExpression class="java.lang.String"> 
    <![CDATA["company_logo.jpg"]]> 
</imageExpression> 
+0

Anglais s'il vous plaît. [so] est un site web en anglais seulement. Vous pouvez aller à [a51] pour voir s'il y a un site ou une proposition pour un dans votre langue. – Dukeling

2

Avec .jrxml lorsque l'on utilise un chemin absolu avec l'image, lorsque le pot emballé FILR sera déployée 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> 
+0

pour master l'expression ci-dessus est bien, que diriez-vous sous-rapport –

0

Utilisez l'expression ci-dessous dans l'image Expression du rapport jaspe IDE sur les propriétés d'image de la jrxml et le chemin d'image par rapport

changer en conséquence chemin w.r.t

getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream() 
Questions connexes