Подтвердить что ты не робот

URL выражения изображения в отчетах 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>

Я немного озадачен правильным способом.

4b9b3361

Ответ 1

<![CDATA["../images/company_logo.jpg"]]> должен сделать трюк. Путь относится к вашему файлу .jasper.

Ответ 2

Вам нужно создать ПАРАМЕТР типа String, называемый, например, CONTEXT, а из вашего JSP отправить контекст сервлета:

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

Теперь в вашем отчете вы используете параметр:

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

То же самое относится к вспомогательным отчетам или другим веб-ресурсам, например:

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

Надеюсь, это полезно.

Ответ 3

При использовании .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>

Ответ 4

иногда лучше использовать File.separtor: "ima" + File.separator + "logo.jpg"

Ответ 5

Используйте приведенное ниже выражение в изображении. Выражение IDE отчета jasper о свойствах изображения jrxml и пути относительного пути.

Соответственно измените путь w.r.t

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

Ответ 6

Таким образом, путь относительно вашего текущего рабочего каталога вашего проекта. "" означает текущий рабочий каталог.

Ответ 7

Поместите свое изображение в следующую структуру:

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

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