Jasper reports JasperReport图像动态垂直拉伸取决于页面大小-可以这样做吗?

Jasper reports JasperReport图像动态垂直拉伸取决于页面大小-可以这样做吗?,jasper-reports,Jasper Reports,我有一份jasper报告,看起来像一份证书 我有一个背景图像,作为整个页面吸引人的边框或框架 问题是,例如,如果文本字段中的名称比元素容器大得多,则会在底部产生额外的空白 背景图像/框架不会拉伸以拉伸页面的整个边缘 文本字段较短时也是如此。但在这种情况下,页面会缩短到几乎看不到框架底部的程度 我希望图像在运行时根据页面的最终大小动态拉伸 以下是我设计的外观: 这是编译时发生的情况,如您所见,底部有额外的空格: 这是我的图像的当前设置 位置类型:浮动 拉伸类型:集装箱底板 jrxml文件 &

我有一份jasper报告,看起来像一份证书

我有一个背景图像,作为整个页面吸引人的边框或框架

问题是,例如,如果文本字段中的名称比元素容器大得多,则会在底部产生额外的空白

背景图像/框架不会拉伸以拉伸页面的整个边缘

文本字段较短时也是如此。但在这种情况下,页面会缩短到几乎看不到框架底部的程度

我希望图像在运行时根据页面的最终大小动态拉伸

以下是我设计的外观:

这是编译时发生的情况,如您所见,底部有额外的空格:

这是我的图像的当前设置

位置类型:浮动

拉伸类型:集装箱底板

jrxml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.8.0.final using JasperReports Library version 6.8.0-2ed8dfabb690ff337a5797129f2cd92902b0c87b  -->
<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="paiwi-certificate-pdf" pageWidth="792" pageHeight="612" orientation="Landscape" columnWidth="792" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isIgnorePagination="true" uuid="28bcb6f8-04d6-48df-ab31-e1bedc2f2434">
    <property name="net.sf.jasperreports.print.create.bookmarks" value="false"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <parameter name="SUBREPORT_DIR" class="java.lang.String"/>
    <parameter name="farmContactListSubreportDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <parameter name="farmName" class="java.lang.String"/>
    <parameter name="farmLogo" class="java.lang.String"/>
    <parameter name="farmAddress" class="java.lang.String"/>
    <parameter name="farmBusinessAddress" class="java.lang.String"/>
    <parameter name="temporaryPartnersName" class="java.lang.String"/>
    <parameter name="partnerName" class="java.lang.String"/>
    <parameter name="partnerContactNumber" class="java.lang.String"/>
    <parameter name="partnerEmail" class="java.lang.String"/>
    <parameter name="packageName" class="java.lang.String"/>
    <parameter name="batchName" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <detail>
        <band height="612" splitType="Stretch">
            <property name="com.jaspersoft.studio.unit.height" value="px"/>
            <staticText>
                <reportElement positionType="Float" x="146" y="80" width="224" height="40" forecolor="#332411" uuid="cb95bd0b-631e-4363-80f5-22d0b0e481fe">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <textElement markup="none">
                    <font fontName="Georgia" size="34" isBold="false"/>
                </textElement>
                <text><![CDATA[CERTIFICATE]]></text>
            </staticText>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="50" y="372" width="446" height="28" uuid="6281f2a7-4eca-4319-b298-22184617a6d3">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement>
                    <font fontName="Georgia" size="24" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{farmName}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="50" y="400" width="446" height="17" uuid="f19dc14b-3ada-460b-8633-85fd5a896d45">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement>
                    <font fontName="Georgia" size="14" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{farmAddress}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="50" y="417" width="446" height="17" uuid="dec9944a-2758-4202-acfe-6f97df346b8f">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement>
                    <font fontName="Georgia" size="14" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{farmBusinessAddress}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="164" y="180" width="473" height="40" forecolor="#332411" uuid="b2a59bb8-1557-498f-b17a-3f0e561bb11b">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                </reportElement>
                <textElement textAlignment="Center">
                    <font fontName="Georgia" size="37" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{partnerName} != null && !$P{partnerName}.equalsIgnoreCase("") ? $P{partnerName} : $P{temporaryPartnersName}]]></textFieldExpression>
            </textField>
            <image onErrorType="Blank">
                <reportElement positionType="Float" x="569" y="338" width="164" height="160" uuid="717d6475-3d42-4e54-a69a-7271bc862e33"/>
                <imageExpression><![CDATA[$P{farmLogo}]]></imageExpression>
            </image>
            <staticText>
                <reportElement positionType="Float" x="416" y="81" width="228" height="40" forecolor="#332411" uuid="f2a78f2d-ed74-45b9-89e8-3365c4afe801">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <textElement markup="none">
                    <font fontName="Georgia" size="34" isBold="false"/>
                </textElement>
                <text><![CDATA[COMPLETION]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="378" y="80" width="33" height="40" forecolor="#332411" uuid="e1c7ac87-81ce-4e8d-b718-2aee4f139003"/>
                <textElement markup="none">
                    <font fontName="Georgia" size="34" isBold="false" isItalic="true"/>
                </textElement>
                <text><![CDATA[of]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="311" y="148" width="179" height="15" forecolor="#6E6E6E" uuid="3d5afae8-14e2-4a3b-8471-db8388e2309f">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement markup="none">
                    <font fontName="Verdana" size="12" isBold="false"/>
                    <paragraph lineSpacingSize="1.0"/>
                </textElement>
                <text><![CDATA[THIS ACKNOWLEDGES THAT]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="290" y="249" width="232" height="15" forecolor="#6E6E6E" uuid="4c301efe-c460-478e-873a-d16430000b18">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement markup="none">
                    <font fontName="Verdana" size="12" isBold="false"/>
                    <paragraph lineSpacingSize="1.0"/>
                </textElement>
                <text><![CDATA[HAS SUCCESSFULLY COMPLETED THE]]></text>
            </staticText>
            <staticText>
                <reportElement positionType="Float" x="50" y="357" width="232" height="15" forecolor="#6E6E6E" uuid="1060f753-1051-4925-9efe-c2ee62146b25">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement markup="none">
                    <font fontName="Verdana" size="12" isBold="false"/>
                    <paragraph lineSpacingSize="1.0"/>
                </textElement>
                <text><![CDATA[ACKNOWLEDGED BY:]]></text>
            </staticText>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="275" y="279" width="263" height="17" uuid="3ab3ec94-b64f-42df-b475-7996bcac1abb">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement textAlignment="Center">
                    <font fontName="Georgia" size="14" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{packageName}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement positionType="Float" x="359" y="296" width="43" height="16" forecolor="#000000" uuid="c6e10785-2750-4247-af0c-6cbafa3aa294"/>
                <textElement markup="none">
                    <font fontName="Georgia" size="14" isBold="false"/>
                    <paragraph lineSpacingSize="1.0"/>
                </textElement>
                <text><![CDATA[Batch:]]></text>
            </staticText>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" x="402" y="296" width="48" height="16" forecolor="#000000" uuid="dff76163-3fd3-4bf6-94fd-de4612485e29">
                    <property name="com.jaspersoft.studio.unit.x" value="px"/>
                </reportElement>
                <textElement textAlignment="Center">
                    <font fontName="Georgia" size="14" isBold="false" isUnderline="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{batchName}]]></textFieldExpression>
            </textField>
            <image onErrorType="Blank">
                <reportElement positionType="Float" x="140" y="279" width="126" height="30" uuid="b0c2acd4-1a0c-4fe6-9a94-be43fe67d704"/>
                <imageExpression><![CDATA["https://i.imgur.com/Ug4T4oX.png"]]></imageExpression>
            </image>
            <image onErrorType="Blank">
                <reportElement positionType="Float" x="550" y="279" width="126" height="30" uuid="9d2cddda-e519-42e2-b74b-554f4c102ef2"/>
                <imageExpression><![CDATA["https://i.imgur.com/paQHNxJ.png"]]></imageExpression>
            </image>
            <image scaleImage="RetainShape" vAlign="Bottom" onErrorType="Blank" evaluationTime="Page">
                <reportElement positionType="Float" stretchType="ContainerBottom" x="0" y="0" width="782" height="612" isPrintInFirstWholeBand="true" uuid="2dadd1da-0694-4e21-86de-fae790844411">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <imageExpression><![CDATA["https://i.imgur.com/y8uffu8.png"]]></imageExpression>
            </image>
        </band>
    </detail>
</jasperReport>

我认为您唯一的问题是没有正确的
scaleImage
属性集,因此元素实际上正在调整大小,但由于您有
scaleImage=“RetainShape”
图像将不会填充新元素维度,而是保持原始图像比例

来自Jasper Reports Ultimate guide:

  • 剪裁图像:如果实际图像大于图像元素的大小,则会将其剪切以保持其原始大小 分辨率,并且只有符合指定大小的区域将被 显示(
    scaleImage=“Clip”
  • 强制图像大小:如果实际图像的尺寸不符合为显示图像的图像元素指定的尺寸,则图像 被迫服从它们,伸展自己,使之适应环境 指定的输出区域。必要时会变形 (
    scaleImage=“FillFrame”
  • 保持图像比例:如果实际图像不适合图像元素,则可以根据这些尺寸进行调整 保持其原始未变形的比例 (
    scaleImage=“RetainShape”

  • 拉伸图像以保持宽度:可以垂直拉伸图像以匹配实际图像高度,同时保留宽度 图像元素的声明宽度(
    scaleImage=“RealHeight”

  • 拉伸图像调整宽度:调整宽度时,可以垂直拉伸图像以匹配实际图像高度 与实际图像宽度匹配的图像元素的宽度 (
    scaleImage=“RealSize”

因此,您需要:

scaleImage="FillFrame"
像这样的



能否添加jrxml(这样我们可以看到不同元素的位置),也许删除空白更容易些?。如果你创造了一个我会看看。你的报告上的实际页面大小也有点不清楚?嗨,彼特,谢谢你的回复。以下是jasperreport的.jrxml文件..=)我这一页的大小是字母格式的,美化的。宽度=792px,高度=612px非常感谢你。我整天都在试图解决这个问题,而答案就在那里,盯着我看。根据你的解决方案,我终于把它修好了。我还将图像设置为al
<image scaleImage="FillFrame" vAlign="Bottom" onErrorType="Blank">
    <reportElement stretchType="ContainerHeight" x="10" y="0" width="782" height="612" uuid="2dadd1da-0694-4e21-86de-fae790844411">
    <property name="com.jaspersoft.studio.unit.height" value="px"/>
    </reportElement>
    <imageExpression><![CDATA["https://i.imgur.com/y8uffu8.png"]]></imageExpression>
</image>