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

Jasper reports Jasper Report在填充整个文本字段之前截断文本,jasper-reports,Jasper Reports,我的PDF报告有一个问题,文本字段中的字符串在填充文本字段之前被截断。缺少的字符数(5-6)不足以覆盖文本字段的末尾 我在report元素中添加了text.truncate.at.char属性,但是字符串仍然被截断(在显示了比以前更多的字符之后)。 我还检查了是否有其他报表元素阻塞了文本字段的结尾,但没有。 最后,我尝试了一个可能的修复方法,并在行尾添加了“\n”,但这也没有帮助 在iReport Designer中,将显示整个字符串 PDF报告 iReport Designer预览版 有人

我的PDF报告有一个问题,文本字段中的字符串在填充文本字段之前被截断。缺少的字符数(5-6)不足以覆盖
文本字段的末尾

我在report元素中添加了
text.truncate.at.char
属性,但是字符串仍然被截断(在显示了比以前更多的字符之后)。
我还检查了是否有其他报表元素阻塞了文本字段的结尾,但没有。
最后,我尝试了一个可能的修复方法,并在行尾添加了“\n”,但这也没有帮助

在iReport Designer中,将显示整个字符串

PDF报告

iReport Designer预览版

有人知道如何让Jasper报告使用文本字段中的整个空间吗

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

编辑:

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和iReport designer中的文本不同? 这是因为iText(创建pdf的库)正在尽其“最大努力”呈现您在jrxml中指示的字体,但不够好(它使用的是另一种更大的字体…)

要避免这些问题,您需要使用并检查
样式
文本元素

OP的求解方式如下:


安装了字体扩展,删除了
textElement
上的
isBold=“true”
,因为设置为
textElement
的样式具有
isBold=“false”

我发布了一个答案,如果您仍然有问题,请发布相关的jrxml代码和用于导出为pdf的代码。谢谢您的回答@peter。明天我会在办公室再看一次。我仍然不明白为什么文本字段中会有一个空白(整个蓝色框就是文本字段),但我会尽力去理解它!传递与textField和blueband相关的jrxml…,在计算如何包装以及是否需要使用FontMetrics时,我会猜测(如果整个蓝色区域都是textField,没有填充),计算FontMetrics时会出现问题…我的感觉是pdf中的字体仍然存在问题,看不到“Unicode”样式,如果您发布它会更好,但我可以看到isBold=“true”,因此jasper可能会在一种字体(粗体)上计算FontMetrics,但iText显示的是另一种字体(不是粗体?)。我强烈建议您在导出到pdf之前添加字体扩展名(这在任何情况下都是一种好的做法)然后检查你的结果。@Petter:我终于弄明白了。字体扩展已经启用,但是“Unicode”的样式声明了
isBold=“false”
,而textElement则声明了
isBold=“true”
。我在注意到发票中的字体没有显示为粗体后删除了textElement中的true,现在所有内容都显示良好。因此iText可能显示为正常,但计算为粗体。谢谢你的帮助!嗨,彼特,谢谢你的回复!我编辑了我的问题,添加了文本字段的代码(我不允许发布更多内容)和
isStretchWithOverflow=“true”
的屏幕截图。也许你还有进一步的建议。@Cornelia如果你也发布你的样式定义“Unicode”会更好,你是否尝试过添加字体扩展名。。