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

Jasper Report truncates text before filling the whole text field

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

我将 text.truncate.at.char 属性 添加到报告元素,但字符串仍然被截断(在显示比以前更多的字符之后)。
我还检查了是否有其他报告元素阻塞了文本字段的末尾,但是有 none.
最后,我尝试了一个我发现的潜在修复方法,并在该行的末尾添加了“\n”,但这也无济于事。

在 iReport Designer 中显示整个字符串。

PDF 报告

iReport 设计器预览

有谁知道如何让 Jasper Reports 在文本字段中使用整个 space?

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

编辑:

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

<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 中的 space 应该足以显示整个 GUID。

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

现在第一行的文字完全显示了,但是textField变大了,客户不接受。

为什么在 pdf 和 iReport 设计器中不同?

这是因为 iText(创建您的 pdf 的库)正在 "best effort" 呈现您在 jrxml 中指定的字体并且它不够好(它正在使用另一种更大的字体......)。

要避免这些问题您需要使用font extensions并检查您在styletextElement

上的设置

OP 已解决 :

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