Подтвердить что ты не робот

Отчеты Jasper - выравнивание динамических текстовых полей и их меток горизонтально

Я использую отчет Jasper 5.2, iReport 5.2 и экспортирую отчет в форматы RTF и PDF.

В моем отчете я хочу добавить несколько текстовых полей вместе с метками (статическим текстом), выровненными по горизонтали, например

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

Но я не могу их выровнять. Это то, что я пробовал

  • Тип позиции: float (для всех статических текстов и полей)
  • Stretch Type: не растягивается (для всех статических текстов и полей)
  • Stretch With Overflow: True (для всех динамических текстовых полей)

Изображение показывает, что я получаю и чего хочу. Более того, содержание текстового поля является динамическим, т.е. Размер содержимого может варьироваться. enter image description here

Я читал много форумов, но не мог найти решение, пожалуйста, предлагайте.

Спасибо

4b9b3361

Ответ 1

Это можно легко сделать с помощью контейнера - элемента Frame.

Вы должны поместить Frame с типом позиции как Float и поставить им как staticText (label), так и textField.

Для textField я установил тип позиции как Float. Stretch With Overlfow как true.

Образец

Файл 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>

Дизайн отчета в iReport:

enter image description here

Результат будет (через предварительный просмотр iReport):

enter image description here

Ответ 2

Чтобы завершить решение Alex K: с Jaspersoft Studio не забудьте установить для свойства Static Text "тип растяжения" значение "относительно самого высокого объекта".

Ответ 3

В Jasper Reports 3.6 и более поздних версиях (включая 5.2) существует возможность использовать несколько полос деталей. Вы можете поместить первые два блока Имя и текст "Sally Admison..." в первом диапазоне. Ниже будет ваш идентификатор пациента и "1234567890Blah...", а ниже это будет другая группа данных с Дата рождения. Это даст вам результаты, которые вы хотите.

Не ссылайтесь на мой пост здесь, поскольку это относится к более ранней версии Jasper Reports версии 3.5. Эта версия не позволяет вам использовать несколько групп, и мне приходилось жить с одной отдельной группой. Это не относится к 5.2. Вы можете получать удовольствие от нескольких групп деталей. Наслаждайтесь!

Ответ 4

Просто увеличьте ширину панели сведений, которая отсортировала вопросы выравнивания для меня.