首页 文章

Jasper Report在填充整个文本字段之前截断文本

提问于
浏览
5

我的PDF报告存在问题,在填写文本字段之前,文本字段中的字符串被截断 . 丢失的字符数量(5-6)不足以超过 textField 的末尾 .

我将 text.truncate.at.char 属性添加到报表元素,但仍然截断了字符串(在显示比以前更多的字符之后) .
我还检查了是否有其他报告元素阻止文本字段的结尾,但没有 .
最后,我尝试了一个潜在的解决方案,我发现并添加"\n"到行尾,但这也没有帮助 .

在iReport Designer中,将显示整个String .

PDF report
Example text field in PDF report

iReport Designer Preview
Example text field in iReport Designer

有谁知道如何使Jasper Reports使用文本字段中的整个空间?

PS:由于客户的意愿,不允许文本溢出到下一行 .
我正在使用Jasper Reports 5.5.2 .

Edit:

textField 是子报表中详细信息区域的一部分 . 我不允许共享整个.jrxml,但这是textField的代码:

<textField>
    <reportElement style="Unicode" mode="Opaque" x="0" y="2" width="467" height="17" forecolor="#FFFFFF" backcolor="#00007F" uuid="e810d7a4-6802-4620-af2f-4c385a9e80a6">
        <property name="net.sf.jasperreports.text.truncate.at.char" value="true"/>          
    </reportElement>
    <textElement verticalAlignment="Middle" markup="none">
        <font size="10" isBold="true"/>
    </textElement>
    <textFieldExpression><![CDATA["   More Details - "+$F{Description} + " ("+$F{Id}+")"]]></textFieldExpression>
</textField>

描述的长度可变,Id是GUID . 在这种情况下, textField 中仍应有足够的空间来显示整个GUID .

这是 isStretchWithOverflow="true" 的另一个屏幕截图:

PDF report (stretchWithOverflow true)

现在,文本完全显示在第一行,但 textField 更大,客户不接受 .

1 回答

  • 3

    为什么pdf和iReport设计师有所不同?

    这是因为iText(创建你的pdf的库)正在使用"best effort"来渲染你在 jrxml 中指示的字体并且它不够好(它使用的是另一个更大的字体......) .

    要避免这些问题 you need to use font extensions 并检查 styletextElement 上的设置

    Checklist to rendered font correctly in pdf

    How to add font extension using iReport

    OP solved as in comment:

    安装了字体扩展,删除 textElement 上的 isBold="true" ,因为样式设置为 textElementisBold="false"

相关问题