Текст отображается обрезанным, игнорируя значение свойства isStretchWithOverflow с использованием экспортера PDF

Можно ли обернуть текст в groupHeader? У меня это работает в разделе деталей, но текст внутри группы, похоже, не хочет переноситься. Я пробовал все комбинации для упаковки, которые я мог придумать или найти в Google.

<style name="reportProject" isDefault="false" fontName="Times" fontSize="10" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false"/>
<group name="PROJHEADER" minHeightToStartNewPage="60">
    <groupExpression><![CDATA[$F{projectHeader}]]>
    </groupExpression>
    <groupHeader>
        <band height="40" splitType="Stretch">
            <printWhenExpression><![CDATA[Boolean.valueOf($F{projectHeader}.length() > 0)]]>
            </printWhenExpression>
            <textField  isStretchWithOverflow="true"  isBlankWhenNull="true"
                                evaluationTime="Group" evaluationGroup="PROJHEADER" bookmarkLevel="1">
                <reportElement positionType="Float" style="reportProject" mode="Opaque" x="0" y="5" 
                                width="515" height="15" backcolor="#C0C0C0"
                                stretchType="RelativeToBandHeight"/>
                <box leftPadding="10">
                    <bottomPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Left" verticalAlignment="Middle" />
                <textFieldExpression class="java.lang.String"><![CDATA[$F{projectHeader}]]>
                </textFieldExpression>
            </textField>
        </band>
    </groupHeader>
</group>

person JimClarke    schedule 19.01.2012    source источник


Ответы (2)


Мне помогает установка для свойства isStretchWithOverflow значения true.

Пример:

<group name="citygr">
    <groupExpression><![CDATA[$F{CITY}]]></groupExpression>
    <groupHeader>
        <band height="20">
            <textField isStretchWithOverflow="true">
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{CITY} + " text1 txt2 longtext3 verylonglongtxt4 long1234567890verylongtext5 txt6 text6 longtext7"]]></textFieldExpression>
            </textField>
        </band>
    </groupHeader>
</group>

Результат будет:

Отчет в формате PDF

Я использую iReport 4.1.3.

Вы также можете попробовать установить свойство net.sf.jasperreports.export.pdf.force.linebreak.policy. Просто добавьте это свойство в свой файл jrxml. Вы можете прочитать об этом свойстве здесь.

Пример:

<jasperReport ...>
    <property name="net.sf.jasperreports.export.pdf.force.linebreak.policy" value="true"/>
person Alex K    schedule 19.01.2012
comment
У меня уже было isStretchWithOverflow = true. Я добавил свойство, и все равно это не сработало. Однако я решил сделать свой textElement простым, как ваш, и теперь он работает. Спасибо. - person JimClarke; 19.01.2012

Это то, с чем я закончил, это работает.

<jasperReport ...>
   <property name="net.sf.jasperreports.export.pdf.force.linebreak.policy" value="true"/>
   .....
    <group name="PROJHEADER" minHeightToStartNewPage="60">
        <groupExpression><![CDATA[$F{projectHeader}]]>
        </groupExpression>
        <groupHeader>
            <band height="40" splitType="Stretch">
                <printWhenExpression><![CDATA[Boolean.valueOf($F{projectHeader}.length() > 0)]]></printWhenExpression>
                <textField  isStretchWithOverflow="true"  isBlankWhenNull="true">
                    <reportElement  style="reportProject" x="0" y="5" 
                        width="400" height="15" backcolor="#C0C0C0"/>
                    <textElement textAlignment="Left" verticalAlignment="Middle" />
                    <textFieldExpression class="java.lang.String"><![CDATA[$F{projectHeader}]]>
                    </textFieldExpression>
                </textField>
            </band>
        </groupHeader>
    </group>
person JimClarke    schedule 19.01.2012