jasper字符集问题

Font '宋体' is not available to the JVM. See the Javadoc for more details.  

net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体' is not available to the JVM. See the Javadoc for more details.
at net.sf.jasperreports.engine.util.JRFontUtil.checkAwtFont(JRFontUtil.Java:358)
at net.sf.jasperreports.engine.util.JRStyledText.getAwtAttributedString(JRStyledText.java:226)
at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:362)
at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:1129)
at net.sf.jasperreports.engine.fill.JRFillStaticText.prepare(JRFillStaticText.java:183)
at

......


步骤如下:

1、下载jasperreport(本人用的是3.7.4版本)工程,将demo/fonts/net/sf/jasperreports/fonts/dejavu下的demo字体清除

2、将windows系统下的字体文件SIMSUN.TTC文件(XP在%SYSTEM%/WINDOWS/Fonts下)copy到demo /fonts/net/sf/jasperreports/fonts/dejavu下,并将名称后缀改为ttf。这个要记着改,ttf是AIX下的字体 格式,否则不会识别。

3、修改demo/fonts/net/sf/jasperreports/fonts下的fonts.xml,将原来字体配置指定到上步骤copy到dejavu目录下的字体文件,如我的改名后叫songti.ttf,所以改后fonts.xml为以下内容(供参考)

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <fontFamily name="宋体">
        <normal>net/sf/jasperreports/fonts/dejavu/songti.ttf</normal>
        <bold>net/sf/jasperreports/fonts/dejavu/songti.ttf</bold>
        <italic>net/sf/jasperreports/fonts/dejavu/songti.ttf</italic>
        <boldItalic>net/sf/jasperreports/fonts/dejavu/songti.ttf</boldItalic>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
        <exportFonts>
            <export key="net.sf.jasperreports.html">'宋体', Arial, Helvetica, sans-serif</export>
            <export key="net.sf.jasperreports.xhtml">'宋体', Arial, Helvetica, sans-serif</export>
        </exportFonts>     
    </fontFamily>
</fontFamilies>

4、将demo/fonts下的内容打成jar包,并放到程序的类路径下。
5、在Web根目录下增加配置文件jasperreports.properties,内容如下

net.sf.jasperreports.awt.ignore.missing.font=true
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=net/sf/jasperreports/fonts/fonts.xml

 

通过以上5个步骤即可解决文章开头的问题。这样在以后实施时,即便系统未安装字体,我们的程序也可以正常运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值