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>
私は正しい方法について少し困惑しています。
<![CDATA["../images/company_logo.jpg"]]>
トリックを行う必要があります。パスは.jasperファイルからの相対パスです。
たとえば[〜#〜] 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"
お役に立てれば幸いです。
。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.separatorを使用する方が良い場合があります:"ima" + File.separator + "logo.jpg"
画像で次の式を使用してください。ジャスパーレポートの式IDE jrxmlの画像プロパティと相対画像パス
それに応じてw.r.tパスを変更
getClass().getResource("META-INF/resources/webjars/Bank/themes/default/images/Logo.png").openStream()
このようにして、パスはプロジェクトの現在の作業ディレクトリからの相対パスになります。 「」現在の作業ディレクトリを意味します。