使用PDF导出器忽略isStretchWithOverflow属性值渲染文本

时间:2012-01-19 00:43:31

标签: jasper-reports export-to-pdf

是否可以在groupHeader中包装文本?我有它在细节部分工作, 但该组内的文字似乎并不想包装。我已经尝试过各种组合,我可以想到或从谷歌找到。

<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>

2 个答案:

答案 0 :(得分:2)

使用 true 值设置 isStretchWithOverflow 属性可以帮助我。

样本:

<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>

结果将是:

The pdf report

我正在使用 iReport 4.1.3

您还可以尝试设置 net.sf.jasperreports.export.pdf.force.linebreak.policy 属性。只需在jrxml文件中添加此属性即可。您可以阅读此属性here

样本:

<jasperReport ...>
    <property name="net.sf.jasperreports.export.pdf.force.linebreak.policy" value="true"/>

答案 1 :(得分:1)

这就是我最终得到的结果。

<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>