我的PDF报告存在问题,在填写文本字段之前,文本字段中的字符串被截断 . 丢失的字符数量(5-6)不足以超过 textField
的末尾 .
我将 text.truncate.at.char
属性添加到报表元素,但仍然截断了字符串(在显示比以前更多的字符之后) .
我还检查了是否有其他报告元素阻止文本字段的结尾,但没有 .
最后,我尝试了一个潜在的解决方案,我发现并添加"\n"到行尾,但这也没有帮助 .
在iReport Designer中,将显示整个String .
PDF report
iReport Designer Preview
有谁知道如何使Jasper Reports使用文本字段中的整个空间?
PS:由于客户的意愿,不允许文本溢出到下一行 .
我正在使用Jasper Reports 5.5.2 .
Edit:
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"
的另一个屏幕截图:
现在,文本完全显示在第一行,但 textField
更大,客户不接受 .
1 回答
为什么pdf和iReport设计师有所不同?
这是因为iText(创建你的pdf的库)正在使用"best effort"来渲染你在 jrxml 中指示的字体并且它不够好(它使用的是另一个更大的字体......) .
要避免这些问题 you need to use font extensions 并检查
style
和textElement
上的设置Checklist to rendered font correctly in pdf
How to add font extension using iReport
OP solved as in comment:
安装了字体扩展,删除
textElement
上的isBold="true"
,因为样式设置为textElement
已isBold="false"