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