web-dev-qa-db-ja.com

Jasper Reportsの画像表現URL

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からのバイトのロード中にエラーが発生したと常に表示されます。

私はこれを試してみましたが、うまくいきましたが、最初の2つの試みがうまくいかないのは少し混乱しています。

これは本当に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>

私は正しい方法について少し困惑しています。

22
Mark Estrada

<![CDATA["../images/company_logo.jpg"]]>トリックを行う必要があります。パスは.jasperファイルからの相対パスです。

30
Giorgos Dimtsas

たとえば[〜#〜] context [〜#〜]と呼ばれるString型のPARAMETERを作成し、JSPからサーブレットコンテキストを送信する必要があります。

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

次に、レポートでパラメーターを使用します。

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

同じことがサブレポートや他のWebリソースにも当てはまります。例:

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

お役に立てれば幸いです。

13
Manuel Gaytan

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

file.separatorを使用する方が良い場合があります:"ima" + File.separator + "logo.jpg"

2

画像で次の式を使用してください。ジャスパーレポートの式IDE jrxmlの画像プロパティと相対画像パス

それに応じてw.r.tパスを変更

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

このようにして、パスはプロジェクトの現在の作業ディレクトリからの相対パスになります。 「」現在の作業ディレクトリを意味します。