我遇到了以pdf格式包装文本的问题。对于像xls,rtf和pptx这样的所有格式,报告工作正常,但是在pdf中,一些文本被包装,即文本的一些字母,尤其是最后几个字母在下一行中打印。我已经尝试了该文本属性中的几乎所有选项。我可以减少效果的唯一方法是将pdf字体名称更改为这些文本的罗马时间。然而,即使这在某些情况下也不起作用。
该代码段包含问题TextField
:
<textField isBlankWhenNull="true">
<reportElement positionType="Float" x="560" y="0" width="60" height="20"/>
<box leftPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement>
<font fontName="Arial Unicode MS" isPdfEmbedded="false"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{CustState}]]>
</textFieldExpression>
</textField>
如果您为此分享一些解决方案,我将非常感激。 感谢...
P.s我在从Ireport 4.0.2生成报告时遇到此问题
答案 0 :(得分:3)
首先,使用Font Extensions。您的问题很可能是因为JasperReports(iText)在生成PDF时未使用您希望它使用的字体。字体扩展解决了这个问题。
其次,您可能遇到了一个已修复的问题。 JasperReports 4.1.1更改日志包括:
the net.sf.jasperreports.export.pdf.force.linebreak.policy configuration property is now deprecated as the PDF text rendering code was refactored so that text is rendered exactly like in AWT
答案 1 :(得分:2)
你可以通过添加文本的空格结尾来避免这种情况。我也使用jasper4.0.2并且它对我有效。
答案 2 :(得分:1)
某些元素(TextField或StaticText)可以增加其高度取决于stretch type
和stretch with overflow
属性。但是如果没有编程,元素的宽度就无法改变。
iReport Ultimate Guide
的引用:
拉伸类型 - 此属性定义如何计算元素 印刷精加工期间的高度;三个可能的值是 如下:NoStretch - 这是预先定义的拉伸类型,它 规定元素高度应保持相等。 RelativeToBandHeight - 元素高度与乐队的大小增加成比例增加;这对于模拟表格边框的垂直线很有用。 RelativeToTallestObject - 元素根据最近元素的变形修改其高度:此选项也与元素组一起使用,元素组是不由iReport管理的元素组机制
拉伸溢出 - 选中此选项后,如果元素不足以包含所有文本行,则此选项允许文本字段垂直适应内容
您可以使用ColumnBuilder API中的DynamicJasper类来设置列宽。
您还可以阅读此discussion。
答案 3 :(得分:0)
对于iReport 4.0.2中的pdf导出中的文本换行问题:
将您的字体转换为Jar,然后添加为外部jar,肯定会起作用。
在iReport设计师中:
步骤1)工具 - &gt;选项 - &gt;字体 - &gt;安装字体
步骤2)选择该字体 - &gt;点击导出为扩展名[将其设为JAR]
步骤3)转到Classpath - &gt;点击ADD Jar - &gt;添加你的字体jar - &gt;行
现在预览报告。