我正在研究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

任何进一步测试的建议都表示赞赏 .

提前致谢 .