Ответ 1
<![CDATA["../images/company_logo.jpg"]]>
должен сделать трюк. Путь относится к вашему файлу .jasper.
Я хотел бы встроить изображение в свой jrxml файл JasperReports. У меня есть эта структура каталогов.
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>
Я немного озадачен правильным способом.
<![CDATA["../images/company_logo.jpg"]]>
должен сделать трюк. Путь относится к вашему файлу .jasper.
Вам нужно создать ПАРАМЕТР типа String, называемый, например, CONTEXT, а из вашего JSP отправить контекст сервлета:
parameters.put("CONTEXT",this.getServletContext().getRealPath("/"));
Теперь в вашем отчете вы используете параметр:
$P{CONTEXT}.toString()+"reports/images/logo.png"
То же самое относится к вспомогательным отчетам или другим веб-ресурсам, например:
$P{CONTEXT}.toString()+"reports/OrdenCompraAlmacen_Items.jasper"
Надеюсь, это полезно.
При использовании .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>
иногда лучше использовать File.separtor: "ima" + File.separator + "logo.jpg"
Используйте приведенное ниже выражение в изображении. Выражение IDE отчета jasper о свойствах изображения jrxml и пути относительного пути.
Соответственно измените путь w.r.t
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()
Таким образом, путь относительно вашего текущего рабочего каталога вашего проекта. "" означает текущий рабочий каталог.
Поместите свое изображение в следующую структуру:
webapps
reports
-->reports
-->sample.jasper
-->WEB-INF
-->classes
-->images
--> company_logo.jpg
<imageExpression class="java.lang.String">
<![CDATA["company_logo.jpg"]]>
</imageExpression>