web-dev-qa-db-fra.com

Jasper Reports - aligne les champs de texte dynamique et leurs étiquettes horizontalement

J'utilise Jasper report 5.2, iReport 5.2 et l'exporte aux formats RTF et PDF.

Dans mon rapport, je souhaite ajouter quelques champs de texte avec leurs libellés (texte statique) alignés horizontalement, comme 

         Name:  $F{name}
          Age:  $F{age}
Date of Birth:  $F{dateOfBirth}

Mais je suis incapable de les aligner. C'est ce que j'ai essayé

  • Type de position: float (pour tout le texte statique et les champs)
  • Type d'étirement: no stretch (pour tout le texte statique et les champs)
  • Étirer avec débordement: True (pour tous les champs de texte dynamique)

L'image montre ce que je reçois et ce que je veux ... De plus, le contenu de mon champ de texte est dynamique, la taille du contenu pouvant varier. enter image description here

J'ai lu de nombreux forums mais je n'ai pas trouvé de solution, suggère-le.

Merci

17
Ali

Cela peut être facilement réalisé à l'aide d'un conteneur - l'élément Frame.

Vous devez mettre Frame avec Type de position sous la forme Float et mettez-leur staticText (label) et textField.

Pour textField, j'ai défini Type de position comme Float the Stretch With Overlfow comme true .

L'échantillon

Le fichier 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="textfields_allign" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d855bf18-5e9b-4060-8caa-3fdd08abce3b">
    <parameter name="name" class="Java.lang.String"/>
    <parameter name="id" class="Java.lang.String"/>
    <parameter name="date" class="Java.lang.String"/>
    <title>
        <band height="69" splitType="Stretch">
            <frame>
                <reportElement uuid="314bfd5b-7b0a-42f4-aca3-e61f0283f126" positionType="Float" x="213" y="1" width="243" height="20"/>
                <staticText>
                    <reportElement uuid="e07201bb-a677-4dc9-a332-f94e6eca2722" positionType="Float" x="0" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <text><![CDATA[Name]]></text>
                </staticText>
                <textField isStretchWithOverflow="true">
                    <reportElement uuid="66c93a44-9015-4ae9-bf05-b68b2420f3ef" positionType="Float" x="121" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$P{name}]]></textFieldExpression>
                </textField>
            </frame>
            <frame>
                <reportElement uuid="8311a483-955e-4280-a9ac-513d7d34495b" positionType="Float" x="213" y="21" width="243" height="20"/>
                <staticText>
                    <reportElement uuid="da404b4e-7908-40ae-8e1b-38e19d9ddc7f" positionType="Float" x="0" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <text><![CDATA[ID]]></text>
                </staticText>
                <textField isStretchWithOverflow="true">
                    <reportElement uuid="e0e312e8-cd2f-48af-8ae8-df95c6195488" positionType="Float" x="121" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$P{id}]]></textFieldExpression>
                </textField>
            </frame>
            <frame>
                <reportElement uuid="8ff2baf9-b0ec-4c8a-b54a-9edd08b200cc" positionType="Float" x="213" y="41" width="243" height="20"/>
                <staticText>
                    <reportElement uuid="b8d97db0-250a-43c8-a2f3-2fa3668c5d15" positionType="Float" x="0" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <text><![CDATA[Date]]></text>
                </staticText>
                <textField isStretchWithOverflow="true">
                    <reportElement uuid="4daa4d17-28be-4ac8-8e1e-2efbeec5f690" positionType="Float" x="121" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$P{date}]]></textFieldExpression>
                </textField>
            </frame>
        </band>
    </title>
</jasperReport>

La conception du rapport dans iReport:

enter image description here

Le résultat sera (via iReport preview):

enter image description here

31
Alex K

Pour compléter la solution d’Alex K: avec Jaspersoft Studio, n’oubliez pas de définir la propriété du type de texte statique «Étirer» sur «relative à l’objet le plus haut».

3
user6236201

Dans Jasper Reports 3.6 et versions ultérieures (y compris la version 5.2), il est possible d’utiliser plusieurs bandes de détails. Vous pouvez mettre les deux premiers blocs de Name et le texte de "Sally Admison ..." dans le premier groupe. En dessous, il s'agira de votre ID patient et du «1234567890Blah ...», et en dessous, d'un autre groupe de détails avec Date de naissance. Cela vous donnera les résultats que vous voulez.

Ne faites pas référence à mon post ici car il s’agit de l’ancienne version 3.5 de Jasper Reports. Cette version ne vous permet pas d'utiliser plusieurs groupes et je devais vivre avec un seul groupe de détails. Ce n'est pas le cas avec 5.2. Vous pouvez vous amuser avec plusieurs groupes de détails. Prendre plaisir!

2
Rachcha

Augmentez simplement la largeur de votre volet de détails, ce qui a réglé les problèmes d'alignement pour moi.

0
user3449721