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é
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.
J'ai lu de nombreux forums mais je n'ai pas trouvé de solution, suggère-le.
Merci
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 .
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:
Le résultat sera (via iReport preview):
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».
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!
Augmentez simplement la largeur de votre volet de détails, ce qui a réglé les problèmes d'alignement pour moi.