相关疑难解决方法(0)

如何/我可以在Jasper报告模板中使用base64作为图像源吗?

所以在我的jrxml文件中,我有以下内容:

<parameter name="smileyfaceimage" class="java.lang.String"/>
Run Code Online (Sandbox Code Playgroud)

然后我参考:

<image scaleImage="FillFrame" onErrorType="Blank">
    <reportElement x="167" y="62" width="363" height="171" backcolor="#333333"/>
    <imageExpression class="java.lang.String"><![CDATA[$P{smileyfaceimage}]]></imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)

这不正确吗?

无论有没有,我都尝试过base64:

data:image/png;base64,
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的图像

只是随机截图

然后我使用https://www.base64-image.de/或任何随机网站来获取base64字符串.我测试了它产生的字符串,它是有效的.

现在在我的代码中;

  • 将变量的值设置为based64字符串
  • 在模板上
    • 设置参数: <parameter name="smileyfaceimage" class="java.lang.String"/>
  • 然后将图像数据添加到页面:

    • <image scaleImage="FillFrame" onErrorType="Blank">
          <reportElement x="167" y="62" width="363" height="171" backcolor="#333333"/>
          <imageExpression><![CDATA[new java.io.ByteArrayInputStream(org.apache.commons.codec.binary.Base64.decodeBase64($P{smileyfaceimage}.getBytes()))]]></imageExpression>
      </image>
      
      Run Code Online (Sandbox Code Playgroud)

我错过了一步吗?

java base64 image jasper-reports

8
推荐指数
2
解决办法
1万
查看次数

在JasperReport中将字节数组显示为图像

我将图像保存为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数据.

java arrays svg jasper-reports

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

jasper-reports ×2

java ×2

arrays ×1

base64 ×1

image ×1

svg ×1