2010-09-02 24 views
17

Chciałbym umieścić obraz w moim pliku Jrxml JasperReports. Mam tę strukturę katalogów.Adres URL wyrażeń obrazu w raportach Jaspera

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

Próbowałem robić to myślenie, że to jest w stosunku do moich raportach korzenia kontekstowego

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

..i to również

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

ale zawsze mówi, że nie był to błąd ładowania bajtów z lokalizacji JRLoader.

Próbowałem to zrobić i działa, ale jestem trochę zdezorientowany, dlaczego moje pierwsze dwie próby nie.

Czy to naprawdę sposób osadzania obrazów w JasperReports? Czy musisz podać całą ścieżkę? Myślę, że powinna być strona względna.

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

Jestem trochę zdziwiony, jeśli chodzi o właściwą drogę.

Odpowiedz

24

powinien załatwić sprawę. Ścieżka jest powiązana z plikiem .jasper.

+0

to prawda! Dzięki –

+0

Należy zauważyć, że w nazwach plików i ścieżkach rozróżniana jest wielkość liter! – venomrld

+1

Nie działało to dla mnie, gdy Spring kompilował pliki raportu Jaspera w locie. Musiałem odwołać się do opisanej techniki [tutaj] (http://stackoverflow.com/questions/5376725/using-ireport-with-a-relative-path) –

2

czasami jest lepsze wykorzystanie File.separtor: "ima" + File.separator + "logo.jpg"

9

Musisz utworzyć parametr typu String o nazwie na przykład KONTEKŚCIE, iz JSP wysłać kontekstu serwletu:

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

teraz w raporcie jest używany parametr:

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

To samo dotyczy subskrypcji lub innych b zasoby, przykład:

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

Mam nadzieję, że jest przydatny.

+0

Działa jak urok! – Nik

-2

umieścić swoje zdjęcie w następującej strukturze:

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

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

Angielski proszę. [so] to strona tylko w języku angielskim. Możesz przejść do [a51], aby sprawdzić, czy w Twoim języku jest strona lub propozycja dla niej. – Dukeling

2

Z .jrxml gdy użycie absolutna ścieżka z obrazu, gdy pakuje słoik FILR zostanie wdrożony dostaniesz:

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] 

Spróbuj załadować zasób jako:

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

dla mistrza powyższe wyrażenie jest w porządku, co powiesz na sub-raport –

0

Użyj poniższego ekspresję w wyrażaniu obrazu raportu jaspisu IDE na właściwości wizerunku jrxml i względną ścieżkę obrazu

Odpowiednio zmienić w.r.t ścieżkę

getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream() 
Powiązane problemy