web-dev-qa-db-fra.com

Comment étirer le champ de texte dans un JasperReport selon le contenu dynamique?

<?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="tree-template" pageWidth="595" pageHeight="842" columnWidth="481" leftMargin="57" rightMargin="57" topMargin="72" bottomMargin="72">
    <style name="Title" forecolor="#000000" fontName="Times New Roman" fontSize="50" isBold="false" pdfFontName="Times-Bold"/>
    <style name="SubTitle" forecolor="#666666" fontName="Times New Roman" fontSize="18" isBold="false" pdfFontName="Times-Roman"/>
    <style name="Column header" forecolor="#666666" fontName="Times New Roman" fontSize="14" isBold="true" pdfFontName="Times-Roman"/>
    <style name="Detail" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman"/>
    <style name="Row" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman">
        <conditionalStyle>
            <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
            <style mode="Opaque" backcolor="#F0EFEF"/>
        </conditionalStyle>
    </style>
    <parameter name="JasperCustomSubReportLocation" class="net.sf.jasperreports.engine.JasperReport"/>
    <parameter name="JasperCustomSubReportDatasource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
    <field name="name" class="Java.lang.String"/>
    <field name="notes" class="Java.lang.String"/>
    <field name="state" class="Java.lang.String"/>
    <field name="project" class="com.pearson.ltg.qmo.dashboard.domain.QDashProject">
        <fieldDescription><![CDATA[project]]></fieldDescription>
    </field>
    <field name="theme" class="Java.lang.String"/>
    <field name="goals" class="Java.lang.String"/>
    <field name="statusDetails" class="Java.lang.String"/>
    <field name="mitigation" class="Java.lang.String"/>
    <field name="status" class="Java.lang.String"/>
    <field name="releaseDate" class="Java.util.Calendar"/>
    <group name="Group1">
        <groupExpression><![CDATA[(int)($V{REPORT_COUNT}/15)]]></groupExpression>
    </group>
    <group name="Group2">
        <groupExpression><![CDATA[(int)($V{REPORT_COUNT}/5)]]></groupExpression>
        <groupHeader>
            <band height="10"/>
        </groupHeader>
    </group>
    <title>
        <band height="58" splitType="Stretch">
            <staticText>
                <reportElement style="Title" x="4" y="0" width="477" height="56"/>
                <textElement>
                    <font size="48" isBold="false"/>
                </textElement>
                <text><![CDATA[Release Details]]></text>
            </staticText>
        </band>
    </title>
    <detail>
        <band height="189" splitType="Stretch">
            <frame>
                <reportElement mode="Opaque" x="0" y="7" width="481" height="13" forecolor="#D0B48E" backcolor="#9DB1B8"/>
            </frame>
            <textField>
                <reportElement x="279" y="7" width="202" height="13"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="79" y="7" width="100" height="13"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{project}.getName()]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="2" y="7" width="79" height="13"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Platform : ]]></text>
            </staticText>
            <staticText>
                <reportElement x="179" y="7" width="100" height="13"/>
                <textElement>
                    <font size="10" isBold="true" isItalic="false"/>
                </textElement>
                <text><![CDATA[Release Name :]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="20" width="47" height="20"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Status : ]]></text>
            </staticText>
            <textField>
                <reportElement x="79" y="20" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{status}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="0" y="40" width="79" height="20"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Release Date: ]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="60" width="181" height="20"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Release Goals]]></text>
            </staticText>
##want this field to auto stretch as per content##
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="0" y="80" width="463" height="20"/>
                <textElement>
                    <font size="10"/>
                </textElement>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{goals}==null ? "Not Defined":$F{goals}]]></textFieldExpression>
            </textField>
##want this field to auto stretch as per content##
            <staticText>
                <reportElement stretchType="RelativeToTallestObject" x="0" y="100" width="98" height="20"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Status Details]]></text>
            </staticText>
            <textField isStretchWithOverflow="true">
                <reportElement stretchType="RelativeToTallestObject" x="2" y="120" width="463" height="20"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{statusDetails}==null ? "Not Defined":$F{statusDetails}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement stretchType="RelativeToTallestObject" x="0" y="140" width="98" height="20"/>
                <textElement>
                    <font isBold="true"/>
                </textElement>
                <text><![CDATA[Risk Mitigation]]></text>
            </staticText>
            <textField>
                <reportElement stretchType="RelativeToTallestObject" x="18" y="160" width="463" height="20"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[$F{mitigation}==null?"Not Defined":$F{mitigation}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement stretchType="RelativeToTallestObject" x="79" y="40" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="Java.lang.String"><![CDATA[new SimpleDateFormat("MMM dd,yyyy").format($F{releaseDate}.getTime())]]></textFieldExpression>
            </textField>
            <line>
                <reportElement x="0" y="180" width="481" height="1"/>
            </line>
        </band>
    </detail>
    <columnFooter>
        <band height="12" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="13" splitType="Stretch">
            <frame>
                <reportElement mode="Opaque" x="0" y="0" width="477" height="13" forecolor="#D0B48E" backcolor="#9DB1B8"/>
                <textField pattern="EEEEE dd MMMMM yyyy">
                    <reportElement style="Column header" x="2" y="0" width="197" height="13" forecolor="#FFFFFF"/>
                    <textElement verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression class="Java.util.Date"><![CDATA[new Java.util.Date()]]></textFieldExpression>
                </textField>
                <textField evaluationTime="Report">
                    <reportElement style="Column header" x="450" y="0" width="27" height="13" forecolor="#FFFFFF"/>
                    <textElement verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression class="Java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement style="Column header" x="370" y="0" width="80" height="13" forecolor="#FFFFFF"/>
                    <textElement textAlignment="Right" verticalAlignment="Middle">
                        <font size="10" isBold="false"/>
                    </textElement>
                    <textFieldExpression class="Java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
                </textField>
            </frame>
        </band>
    </pageFooter>
</jasperReport>
14
Debadatta
  1. Cliquez sur le champ de texte particulier dans iReport.
  2. Sur le côté droit, voir Propriétés TextField.
  3. Cochez l'option "ÉTIREMENT AVEC TROP-PLEIN".

Cela a fonctionné dans mon cas.

5
Mukesh Chauhan

Ajoutez simplement le isStretchWithOverflow="true" au champ textField que vous souhaitez en tant qu'élément.

<textField isStretchWithOverflow="true">
    <reportElement x="279" y="7" width="202" height="13"/>
    <textElement/>
    <textFieldExpression class="Java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
4
Pubudu Maduranga

Vous avez la solution. Modification de tous les champs de texte statiques et de toutes les propriétés des éléments en positionType="Float".

2
Debadatta

Vous pouvez ajouter un attribut isStretchWithOverflow défini sur true <textField isStretchWithOverflow="true">

0
Ardhi Fauzi

Le champ peut s'étirer automatiquement avec débordement, mais il diminue (un peu comme un retour à la ligne) au lieu d'augmenter la largeur. Dans PDF de cette option que vous recherchez, seraient de peu ou pas d’utilité).

Vérifiez cet autre fil pour plus d'informations largeur de cellule de colonne dynamique

[~ # ~] modifier [~ # ~] Vérifiez également et incluez l'extension des polices jasperreports. Peut-être que cela pourrait aider à un déploiement parfait sans problèmes de polices OS.

0
Alfabravo