如何在Jasper中使用路径之前检查文件是否存在

时间:2013-11-08 14:21:46

标签: java jasper-reports

我有一个jrxml,其节点如下,

<image>
  <reportElement x="181" y="0" width="209" height="74"/>
  <imageExpression class="java.lang.String"><![CDATA["logo.jpg"]]></imageExpression>
</image>

如何检查物理文件logo.jpg是否存在? 如果不存在,如何回退到默认图像&#34; default.jpg&#34;?

3 个答案:

答案 0 :(得分:1)

<variable name="LOGO" class="java.lang.String">
    <variableExpression>
        <![CDATA[(new File("logo.jpg").isFile())? "logo.jpg":"default.jpg"]]>
    </variableExpression>
    <initialValueExpression>
        <![CDATA[(new File("logo.jpg").isFile())? "logo.jpg":"default.jpg"]]>
    </initialValueExpression>
</variable>

<image>
  <reportElement x="181" y="0" width="209" height="74"/>
  <imageExpression class="java.lang.String"><![CDATA[$V{LOGO}]]></imageExpression>
</image>

Got clue from this site

答案 1 :(得分:0)

您可以在Java代码中使用exists,如果这是您要用来检查的内容。不确定你是否要求采用另一种涉及XML本身的方法。

如果文件不存在,那么您只需映射默认图像。

答案 2 :(得分:0)

使用jasper报告中的参数或字段发送图像路径。例如,我使用field发送图像路径。字段名称是图像imagePath。如果您有一个名为logo.png的图像,则图像路径为字符串,其他方式设置默认图像的路径。 并用image来编写这个语法。

<image>
    <reportElement uuid="0db5b93f-46e4-4aaa-aac9-5a6d090d7eb6" x="127" y="23" width="206" height="78"/>
    <imageExpression><![CDATA[$F{imagePath}]]></imageExpression>
</image>

...享受