【问题标题】:How to handle "Byte data not found"如何处理“找不到字节数据”
【发布时间】:2014-05-20 13:00:44
【问题描述】:

我希望我的报告根据其他一些字段的值按行显示图像。例如。像这样:

column_1 | column_2
======================
  xyz    | <xyz.jpg>
  abc    | <abc.jpg>

column_1 包含文本,column_2 显示来自文件 text + ".jpg" 的图像。为此,我将图像表达式设置为:$F{COLUMN_1}+ ".jpg"。

问题在于,有时可能(在我的情况下:将会)不存在具有适当名称的图像文件。这会生成“错误填充打印...在 [some_image_path] 处找不到字节数据”。

有没有办法处理此类错误,例如,当指定文件不存在时显示一些默认图像?

【问题讨论】:

标签: jasper-reports


【解决方案1】:

事实证明,使用“onErrorType”可以决定错误图像会发生什么。这是一个例子:

<image scaleImage="RealHeight" hAlign="Center" vAlign="Middle" onErrorType="Blank">

当没有找到图像文件时,这会将图像设置为空白,而不是以错误结束。

【讨论】:

    【解决方案2】:

    查看设计器-> 属性->参数->点击左键->添加-> 子报表参数名称 图片 价值表达 选择whit双击IMAGEN(参数)

    【讨论】:

      【解决方案3】:

      Tosz 的解决方案确实有效,但不是很灵活:您只会得到一个空白框,或默认图标而不是图像。

      要指定自定义行为,您可以使用以下表达式:

      $P{REPORT_FILE_RESOLVER}.resolveFile( $F{COLUMN_1}+ ".jpg" )
      

      找不到文件时返回null。 例如,您可以将其用作图像表达式并通过简单的检查指定默认图像:

      $P{REPORT_FILE_RESOLVER}.resolveFile( $F{COLUMN_1}+ ".jpg" ) != null ? $F{COLUMN_1}+ ".jpg" : "default.jpg"
      

      【讨论】:

        【解决方案4】:

        在XML代码中查找图片数据大概是这样的

        <image>
             <reportElement x="0" y="0" width="164" height="126"/>
             <imageExpression class="java.lang.String">
                 <![CDATA["coffee.jpg"]]>
             </imageExpression>
        </image>
        

        coffee.jpg 更改为这样的完整路径

        <![CDATA["src\\formsAndReports\\coffee.jpg"]]>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-28
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          相关资源
          最近更新 更多