2010-09-02 3 views
17

Ich möchte ein Bild in meine JasperReports jrxml-Datei einbetten. Ich habe diese Verzeichnisstruktur.Bildausdruck-URL in Jasper Reports

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

Und ich versuchte, dieses Denken zu tun, dass diese

meiner Berichte Kontextstamm relativ
<image> 
<reportElement x="0" y="0" width="104" height="40"/> 
<imageExpression class="java.lang.String"> 
    <![CDATA["images/company_logo.jpg"]]> 
</imageExpression> 
</image> 

..und dies auch

<image> 
<reportElement x="0" y="0" width="104" height="40"/> 
<imageExpression class="java.lang.String"> 
    <![CDATA["/images/company_logo.jpg"]]> 
</imageExpression> 
</image> 

aber es sagt, immer ein Fehler Laden war Bytes von Standort JRLoader.

Ich habe versucht, dies zu tun und es funktioniert, aber ich bin ein wenig verwirrt, warum meine ersten beiden Versuche nicht.

Ist das wirklich, wie Sie Bilder in JasperReports einbetten? Müssen Sie den gesamten Weg liefern? Ich denke, dass es eine Seite geben sollte relativ etwas.

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

Ich bin ein wenig verwirrt über den richtigen Weg.

Antwort

24

<![CDATA["../images/company_logo.jpg"]]> sollte den Trick tun. Der Pfad ist relativ zu Ihrer .jasper-Datei.

+0

das ist richtig! Danke –

+0

Ein Punkt zu beachten ist, dass die Dateinamen und Pfade Groß-und Kleinschreibung beachten! – venomrld

+1

Dies funktionierte nicht für mich, als Spring die Jasper-Berichtsdateien im laufenden Betrieb kompilierte. Ich musste auf die Technik [hier] zurückgreifen (http://stackoverflow.com/questions/5376725/using-ireport-with-a-relative-path) –

2

manchmal ist eine bessere Nutzung File.separtor: "ima" + File.separator + "logo.jpg"

9

Sie benötigen einen Parameter vom Typ String zum Beispiel CONTEXT, und von Ihrem JSP senden Sie den Servlet-Kontext genannt zu erstellen:

parameters.put("CONTEXT",this.getServletContext().getRealPath("/")); 

Jetzt In Ihrem Bericht verwenden Sie den Parameter:

$P{CONTEXT}.toString()+"reports/images/logo.png" 

Das gleiche gilt für Unterberichte oder andere wir b Ressourcen, Beispiel:

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

Ich hoffe, es ist nützlich.

+0

Funktioniert wie ein Charme! – Nik

-2

Setzen Sie Ihr Bild in der folgenden Struktur:

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

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

Englisch bitte. [so] ist eine englischsprachige Website. Sie können zu [a51] gehen, um zu sehen, ob es in Ihrer Sprache eine Website oder einen Vorschlag für einen gibt. – Dukeling

2

Mit .jrxml bei der Verwendung ein absoluter Pfad mit Bild, wenn das verpackte jar FILR erhalten Sie wird eingesetzt:

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] 

Versuchen Sie Ressource wie zu laden:

<imageExpression><![CDATA[this.getClass().getResourceAsStream("/img/mdg_logo.jpg")]]></imageExpression> 
+0

für Master der obige Ausdruck ist in Ordnung, wie wäre es mit Unterbericht –

0

Verwenden Sie den folgenden Ausdruck in dem Bildausdruck des Berichts IDE Jaspis auf Bildeigenschaften des jrxml und der relativen Bildpfad

Dementsprechend w.r.t Weg

ändern
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream() 
Verwandte Themen