我将图像保存为a byte[]
,我想将其显示为JasperReport中的图像.我试过从Java方法获取数据:
public InputStream getImage(){
return new ByteArrayInputStream(getImageByteArray());
}
Run Code Online (Sandbox Code Playgroud)
和
public Image getImage() throws IOException{
return ImageIO.read(new ByteArrayInputStream(getImageByteArray()));
}
Run Code Online (Sandbox Code Playgroud)
和
public String getImage(){
return new String((new org.apache.commons.codec.binary.Base64()).encode(getImageByteArray()));
}
Run Code Online (Sandbox Code Playgroud)
但他们似乎都没有工作.
jrxml看起来像这样:
<image hAlign="Center" vAlign="Middle" isUsingCache="true" isLazy="true">
<reportElement positionType="Float" x="0" y="0" width="164" height="32" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true" uuid="c63c84a8-41c7-4ca3-8451-751d43fa8a9e"/>
<imageExpression><![CDATA[$P{paramObject}.getImage()]]></imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)
我尝试的一些东西得到了异常,有些打印了JasperReport但是图像应该是空白的区域.我知道图像数据存在,因为我可以在JSF页面中显示它.图像数据是SVG数据.
我希望我的报告根据其他一些字段的值显示行中的图像.就像这样:
column_1 | column_2
======================
xyz | <xyz.jpg>
abc | <abc.jpg>
Run Code Online (Sandbox Code Playgroud)
column_1保存文本,column_2显示文件文本+".jpg"的图像.我通过将图像表达式设置为:$ F {COLUMN_1} +".jpg"来完成此操作.
问题是它有时可能(并且在我的情况下:将会发生)不存在具有适当名称的图像文件.这会生成"错误填写打印...未在以下位置找到字节数据:[some_image_path]".
有没有办法处理这样的错误,比如说,当指定的文件不存在时,显示一些默认图像?