当前位置: 首页 > 知识库问答 >
问题:

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

那铭
2023-03-14

我有一份像证书一样的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>

共有1个答案

邹祺然
2023-03-14

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

来自Jasper Reports终极指南:

>

  • 裁剪图像:如果实际图像大于图像元素大小,则会将其剪掉,以保持其原始分辨率,并且只显示符合指定大小的区域(scaleimage=“clip”)。
  • 强制图像大小:如果实际图像的尺寸不符合为显示它的图像元素指定的尺寸,则强制图像服从这些尺寸并伸展自己,以便适合指定的输出区域。如果需要,它将被变形(scaleimage=“fillframe”)。
  • 保持图像比例:如果实际图像不适合于图像元素,可以将其调整为这些尺寸,同时保持其原始未变形的比例(scaleimage=“RetaShape”)。

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

    拉伸图像调整宽度:可以垂直拉伸图像以匹配实际的图像高度,同时调整图像元素的宽度以匹配实际的图像宽度(scaleimage=“realsize”)。

    所以你需要:

    scaleImage="FillFrame"
    
    <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>
    

  •  类似资料:
    • 我有一个图像,我想为它设置一个特定的宽度和高度(以像素为单位) 但如果我使用css设置宽度和高度(),图像会被拉伸,而且可能会很难看。 如何使用CSS填充图像到一个特定的大小,而不是拉伸它? 填充图像: 请注意,在上面的填充图像示例中:首先,图像的大小被调整为150x255(保持的纵横比),然后,它裁剪为150x100。

    • 我试图创建的内容将始终采取100%的高度到底部(减去填充)的盒子,即使它是调整大小和有小的内容。我被想法卡住了…感谢所有的建议! 这里还有一支笔:https://codepen.io/dalmat/pen/vomxzm

    • 我正在使用以下代码获取垂直图像并向其添加类,但我不知道为什么,它不起作用: 我的测试页

    • 想改进这个问题吗 通过编辑这篇文章,更新问题,使其只关注一个问题。 有没有办法让< code>ViewPager不是水平滚动,而是垂直滚动?!

    • 问题内容: 我有一个包含图像和ap标签的div(如下所示)。我想根据段落的多少行在div的中间垂直对齐图像。垂直对齐不起作用。我现在正在使用JavaScript找出要添加到margin- top的数量,但是宁愿使用CSS。有任何想法吗? 问题答案: 尝试将元素的属性设置为图像的高度,例如: 编辑: 刚意识到我读错了问题,却错过了多行的事实。尝试的一种选择是完全删除元素,并将其设置为of的,使用的o

    • 问题内容: 我正在尝试创建动态大小的UITableViewCells,根据从服务器下载的图像的长宽比更改高度。 例如,如果图像的高度是其宽度的两倍,我希望UITableViewCell的高度是屏幕宽度的两倍,以便图像可以占据屏幕的整个宽度并保持宽高比。 我试图做的是在单元格中添加约束,并使用UITableViewAutomaticDimension来计算高度,但是我面临的问题是,在下载图像之前,我