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

时间:2015-12-14 16:14:28

标签: jasper-reports

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

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

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

PDF报告 Example text field in PDF report

iReport Designer预览 Example text field in iReport Designer

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

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 report (stretchWithOverflow true)

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

1 个答案:

答案 0 :(得分:3)

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

这是因为iText(创建你的pdf的库)正在尽最大努力渲染你在 jrxml 中指示的字体并且它不够好(它使用的是另一种字体大...)。

要避免这些问题,您需要使用font extensions 并检查styletextElement上的设置

Checklist to rendered font correctly in pdf

How to add font extension using iReport

OP在comment中解决了:

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