我正在研究jasper报告,用中文字符动态拉伸文本字段但是多个测试用例都失败了 . PDF结果从iReport生成的本地看起来很棒,但在测试JBoss服务器时失败了 . 我相信这个问题与字体有关,并通过阅读this参考确认 . 以下是我设置测试环境和测试用例的步骤:
-
将字体(Arial Unicode MS和Ming(ISO 10646))安装到java中;
-
通过打印出java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()来确认字体安装正确.getAvailableFontFamilyNames();
-
使用iReport 3.6.1创建字体扩展并添加到类路径
testing.Jrxml
<detail>
<band height="80" splitType="Stretch">
<textField isStretchWithOverflow="true" isBlankWhenNull="false">
<reportElement key="textField" positionType="Float" stretchType="RelativeToTallestObject" x="246" y="35" width="150" height="20" isPrintWhenDetailOverflows="true"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="Arial Unicode MS"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["扭扭車,盒子 ,淨水器,膠水,汽車啟動應急電源,電池,麥克風asdfkljhqwerpouikljhsdfgklhn,mhjzkxlchuioe"]]></textFieldExpression>
</textField>
</band>
</detail>
What I have tried
-
添加pdfFontName = Arial Unicode MS并设置pdfEncoding = Identity-H
-
使用字体Ming(ISO 10646)
-
拉伸文本字段填充英语(成功)
-
在中文字符中间添加多个"\n"(成功拉伸但难以控制)
Server environment
Aix 7.1与JasperReport 3.6.1
任何进一步测试的建议都表示赞赏 .
提前致谢 .