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并检查您在style
和textElement
上的设置
OP 已解决 :
已安装字体扩展,删除 textElement
上的 isBold="true"
,因为设置为 textElement
的样式有 isBold="false"
我的 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并检查您在style
和textElement
OP 已解决
已安装字体扩展,删除 textElement
上的 isBold="true"
,因为设置为 textElement
的样式有 isBold="false"