用图片替换一些文字

时间:2013-12-24 10:03:43

标签: jasper-reports

我想用 JasperReports 报告中的图像替换文本(无论在何处找到TEXT,应该用图像替换)。有谁知道怎么做?

我在互联网上搜索但找不到任何东西,所以请不要对我评价为负。

1 个答案:

答案 0 :(得分:1)

您可以借助 printWhenExpression 属性解决此任务。

样本

Datasoure

我使用了 csv 数据源( holidays.csv ):

name,date
New Year's Day,January 1st
Christmas Day,December 25th
Valentine's Day,February 14th

报告的设计

我已经放置了两个 textFields 来显示假期的名字和假期的日期。我已经在 textField 下放置 image 元素,用假日名称显示图片。

借助 printWhenExpression ,我会显示假期的名字或图片。

iReport 中的报告设计:

enter image description here

报告的模板

jrxml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="holidays" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e0310045-780b-4af3-aa7b-ed7f5da1985f">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="name" class="java.lang.String"/>
    <field name="date" class="java.lang.String"/>
    <detail>
        <band height="66" splitType="Stretch">
            <image scaleImage="RealHeight">
                <reportElement uuid="e7738ed8-673e-49e9-8c14-060378cb6a79" x="0" y="0" width="263" height="66">
                    <printWhenExpression><![CDATA[$F{name}.equals("Christmas Day")]]></printWhenExpression>
                </reportElement>
                <imageExpression><![CDATA["mc.jpg"]]></imageExpression>
            </image>
            <textField>
                <reportElement uuid="167148f8-ad51-4c87-9faa-27bf18f2160e" x="0" y="0" width="263" height="66" forecolor="#FF6666">
                    <printWhenExpression><![CDATA[!$F{name}.equals("Christmas Day")]]></printWhenExpression>
                </reportElement>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Forte" size="24" isItalic="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="ad7c75b4-975b-478e-8a44-090a63c52896" x="263" y="0" width="263" height="66"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Arial" size="24" isItalic="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

生成的输出

生成的报告将(通过 iReport 中的预览): enter image description here


<强> 备注

您可以使图像的表达和使用复杂化,例如获取图像名称的变量(或带路径的名称)。