jasper-reports - image jasperreport
URL de expresión de imagen en Jasper Reports (6)
Con .jrxml cuando use una ruta de acceso absoluta con imagen, cuando se implementará el archivo jar empaquetado obtendrá:
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]
Intenta cargar el recurso como:
<imageExpression><![CDATA[this.getClass().getResourceAsStream("/img/mdg_logo.jpg")]]></imageExpression>
Me gustaría incrustar una imagen en mi archivo jrxml JasperReports. Tengo esta estructura de directorios.
Tomcat Root
webapps
reports
-->images
--> company_logo.jpg
-->reports
-->sample.jasper
-->WEB-INF
-->classes
Y traté de hacer esto pensando que esto es relativo a la raíz de contexto de mis informes
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="java.lang.String">
<![CDATA["images/company_logo.jpg"]]>
</imageExpression>
</image>
..y esto también
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="java.lang.String">
<![CDATA["/images/company_logo.jpg"]]>
</imageExpression>
</image>
pero siempre dice que hubo un error al cargar bytes desde la ubicación JRLoader
.
Intenté hacer esto y funciona, pero estoy un poco confundido de por qué mis dos primeros intentos no lo hacen.
¿Es realmente así como incrustar imágenes en JasperReports? ¿Necesitas abastecer todo el camino? Estoy pensando que debería haber una página relativa a algo.
<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>
Estoy un poco confundido acerca de la forma correcta.
Necesita crear un PARÁMETRO de tipo String llamado, por ejemplo, CONTEXT , y desde su JSP enviar el contexto del servlet:
parameters.put("CONTEXT",this.getServletContext().getRealPath("/"));
Ahora, en tu informe usas el parámetro:
$P{CONTEXT}.toString()+"reports/images/logo.png"
Lo mismo se aplica a los subinformes u otros recursos web, ejemplo:
$P{CONTEXT}.toString()+"reports/OrdenCompraAlmacen_Items.jasper"
Espero que sea útil.
Pon tu foto en la siguiente estructura:
webapps
reports
-->reports
-->sample.jasper
-->WEB-INF
-->classes
-->images
--> company_logo.jpg
<imageExpression class="java.lang.String">
<![CDATA["company_logo.jpg"]]>
</imageExpression>
Use la siguiente expresión en la expresión de imagen del informe de jaspe IDE en las propiedades de imagen del jrxml y la ruta de imagen relativa
En consecuencia, cambiar la ruta de acceso
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()
a veces es mejor usar File.separtor: "ima" + File.separator + "logo.jpg"
<![CDATA["../images/company_logo.jpg"]]>
debería hacer el truco. La ruta es relativa a su archivo .jasper.