ti-enxame.com

URL de expressão de imagem no Jasper Reports

Eu gostaria de incorporar uma imagem no meu arquivo JasperReports jrxml. Eu tenho essa estrutura de diretórios.

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

E tentei fazer isso pensando que isso é relativo à minha raiz de contexto de relatórios

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

..e isso também

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

mas sempre diz que houve um erro ao carregar bytes da localização JRLoader.

Eu tentei fazer isso e funciona, mas estou um pouco confuso porque minha primeira tentativa não funciona.

É realmente assim que você incorpora imagens no JasperReports? Você precisa fornecer todo o caminho? Eu estou pensando que deveria haver uma página relativa Alguma coisa.

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

Estou um pouco confuso sobre a maneira correta.

20
Mark Estrada

<![CDATA["../images/company_logo.jpg"]]> deve fazer o truque. O caminho é relativo ao seu arquivo .jasper.

29
Giorgos Dimtsas

Você precisa criar um PARÂMETRO do tipo String chamado por exemploCONTEXT, e do seu JSP enviar o contexto do servlet:

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

Agora, no seu relatório, você usa o parâmetro:

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

O mesmo se aplica a sub-relatórios ou outros recursos da web, por exemplo:

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

Espero que seja útil.

11
Manuel Gaytan

Com .jrxml quando usar um caminho absoluto com imagem, quando o pacote jar filr for implementado você terá:

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]

Tente carregar recursos como:

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

às vezes é melhor usar File.separator: "ima" + File.separator + "logo.jpg"

2
Jose Manuel Prieto

Use a expressão abaixo na expressão Expression of jasper report IDE nas propriedades de imagem do jrxml e no caminho da imagem relativa 

Por conseguinte, mude o caminho

getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()
0
satish hiremath