我想将图像嵌入到JasperReports jrxml文件中。我有这个目录结构。
Tomcat Root
webapps
reports
-->images
--> company_logo.jpg
-->reports
-->sample.jasper
-->WEB-INF
-->classes
我尝试这样做,认为这与我的报告上下文根
有关<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="java.lang.String">
<![CDATA["images/company_logo.jpg"]]>
</imageExpression>
</image>
..这也是
<image>
<reportElement x="0" y="0" width="104" height="40"/>
<imageExpression class="java.lang.String">
<![CDATA["/images/company_logo.jpg"]]>
</imageExpression>
</image>
但它始终表示从位置JRLoader
加载字节时出错。
我尝试过这样做并且有效,但我有点困惑为什么我的前两次尝试没有。
这真的是你在JasperReports中嵌入图像的方式吗?你需要提供整条路径吗?我在想应该有一个页面相对 东西。
<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>
我对正确的方法感到有些困惑。
答案 0 :(得分:29)
<![CDATA["../images/company_logo.jpg"]]>
应该做到这一点。该路径相对于.jasper文件。
答案 1 :(得分:11)
您需要创建一个String类型的PARAMETER,例如 CONTEXT ,并从您的JSP发送servlet上下文:
parameters.put("CONTEXT",this.getServletContext().getRealPath("/"));
现在,在报告中使用参数:
$P{CONTEXT}.toString()+"reports/images/logo.png"
同样适用于子报告或其他网络资源,例如:
$P{CONTEXT}.toString()+"reports/OrdenCompraAlmacen_Items.jasper"
我希望它很有用。
答案 2 :(得分:5)
使用 .jrxml 时,如果对图像使用绝对路径,则在部署打包的 jar filr时,您将获得:
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]
尝试将资源加载为:
<imageExpression><![CDATA[this.getClass().getResourceAsStream("/img/mdg_logo.jpg")]]></imageExpression>
答案 3 :(得分:2)
有时最好使用File.separator:"ima" + File.separator + "logo.jpg"
答案 4 :(得分:0)
在jsper报告IDE的图像表达式中使用以下表达式jrxml的图像属性和相对图像路径
相应改变w.r.t路径
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()
答案 5 :(得分:0)
这样,路径相对于项目的当前工作目录。 “。”表示当前工作目录。
答案 6 :(得分:-2)
将您的照片放在以下结构中:
webapps
reports
-->reports
-->sample.jasper
-->WEB-INF
-->classes
-->images
--> company_logo.jpg
<imageExpression class="java.lang.String">
<![CDATA["company_logo.jpg"]]>
</imageExpression>