是否可以使用动态表达式设置scaleImage属性?

时间:2017-07-21 10:38:01

标签: image jasper-reports

scaleImage="RetainShape"适用于较大的图像,但对于较小的图像,它会根据报告元素的宽度或高度放大(拉伸,妨碍图像质量)。

<image scaleImage="RetainShape" hAlign="Center" vAlign="Middle">
    <reportElement x="10" y="10" width="534" height="300"
    <imageExpression><![CDATA[$P{originalImage}]]></imageExpression>
</image>

我们可以动态设置scaleImage属性吗?如果(图片很大)scaleImage="RetainShape"其他scaleImage="Clip"

1 个答案:

答案 0 :(得分:0)

对于那些正在寻找类似场景的答案的人...... 正如Alex建议的那样,我创建了一个条件样式并将其应用于图像标记

<style name="scaleImageStyle" hImageAlign="Center" vImageAlign="Middle">
    <conditionalStyle>
        <conditionExpression><![CDATA[$P{originalImage}.getHeight(null) <=300]]></conditionExpression>
        <style scaleImage="Clip"/>
    </conditionalStyle>
    <conditionalStyle>
        <conditionExpression><![CDATA[$P{originalImage}.getHeight(null) >300]]></conditionExpression>
        <style scaleImage="RetainShape"/>
    </conditionalStyle>
</style>

<image hAlign="Center" vAlign="Middle">
            <reportElement style="scaleImageStyle" isPrintRepeatedValues="false" x="0" y="0" width="535" height="300" uuid="d813ec39-6f47-4361-9d82-c312924c2ba0"/>
            <imageExpression><![CDATA[$P{originalImage}]]></imageExpression>
        </image>