`
vase
  • 浏览: 422259 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JasperReport在Aix环境下运行时找不到字体的解决方案

阅读更多

在AIX的weblogic9.2上部署报表,导出时报找不到字体的错误,如下:

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

......

网上有两种解决办法:一是给系统或者jdk安装字体库;二是jasperreport官网的help中给出的解决方案,将字体打jar包放到工程类路径下(http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=66132)

 

前者以前开发的时候有个同事试过,没问题。考虑以后部署、实施环境的不确定性,我觉得还是后者比较好,不过缺点是增加了程序大小,打war包后大概比原来多5M多。不过对于现代硬件多5M不是问题。

这里主要介绍后者的方法,步骤如下:

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个步骤即可解决文章开头的问题。这样在以后实施时,即便系统未安装字体,我们的程序也可以正常运行了。

 

前者我没再去试,这里列出配置方法(引用自http://www.loveunix.net/thread-100861-1-1.html)

环境aix5.3+jdk1.4+weblogic
jdk目录:/usr/jdk1.4
1、找到window的字体文件simsun.ttc
2、把simsun.ttc拷贝到jre的字体目录${JAVA_HOME}/jre/lib/fonts目录
顺便把文件名也改了,为songti.ttf。
这个名字应该是无所谓的,但是下面的步骤都是从网上看的,使用的都是songti.ttf这个字体文件名。
3.修改JRE的字体配置
3.1 修改fonts.scale文件[${JAVA_HOME}/jre/lib/fonts/fonts.scale]
  把一行的数字加1
  在文件尾添加
  songti.ttf -zhongyi-song-medium-r-normal--0-0-0-0-m-0-gbk-0
3.2 修改fonts.dir文件[${JAVA_HOME}/jre/lib/fonts/fonts.dir]
  把一行的数字加4
  在文件尾添加
  songti.ttf -zhongyi-song-medium-r-normal--0-0-0-0-m-0-gbk-0
3.3 修改font.properties文件[${JAVA_HOME}/jre/lib/font.properties.zh]
  将font.properties.zh文件的内容拷贝到font.properties
  将下面文件的后缀改为toproperties:
   font.properties.zh
   font.properties.zh_GB18030
   font.properties.zh_TW
   font.properties.zh_TW_UTF8
   font.properties.zh_UTF8
  修改font.properties把下面一行(大概是第21行):
   serif.1=-Monotype-TimesNewRomanWT-medium-r-normal--*-%d-75-75-*-*-gb2312.1980-0
  替换为:
   serif.1=-zhongyi-SimSun-medium-r-normal--0-0-0-0-m-0-gbk-0
  增加一行到其它filename.xxxxxx=的后面:
   filename.simsun_medium_r=songti.ttf
5、修改startWeblogic.sh,设置LANG环境变量。
执行:locale -a
控制台输出:
    # locale -a
    C
    POSIX
    en_US
    en_US.8859-15
    Zh_CN
    Zh_CN.GB18030
    ZH_CN
    ZH_CN.UTF-8
    en_US.ISO8859-1
    zh_CN.IBM-eucCN
    zh_CN
根据输出设置LANG环境变量:
  export LANG=zh_CN.IBM-eucCN
6、重新启动weblogic就可以了.

分享到:
评论
3 楼 绿生2009 2012-06-18  
今天碰到了类似的问题,我的是“仿宋”找不到,按照如上方法可以,但同事说应该不会出现这样的问题,iReport不是会自己去找么?
2 楼 vase 2011-01-13  
wangxj178 写道
直接更改后缀名在linux里不识别

我没在linux试过,应该没问题,你再检查检查配的是否正确吧。
1 楼 wangxj178 2011-01-13  
直接更改后缀名在linux里不识别

相关推荐

    jasperreport maven打包后找不到字体解决方案

    jasperreport 用maven打包后找不到字体解决方案 net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font

    jasperReport中文字体和配置.rar

    - **字体嵌入**:为了确保在不同环境下报表都能正确显示,可以将字体嵌入到生成的PDF中。在JasperReport API中,可以使用`net.sf.jasperreports.engine.type.EmbeddedFontEnum`来指定是否嵌入字体。 3. **配置文件...

    jasperreport 【中文字体依赖】jars

    本主题聚焦于JasperReport在处理中文字符时遇到的问题及其解决方案,特别是关于中文字体的依赖。 标题中的"jasperreport 【中文字体依赖】jars"指的是在使用JasperReport生成包含中文字符的报表时,需要额外的字体...

    JasperReport浏览器输出PDF为空白页的解决方案

    在IT行业中,报表生成工具是...通过逐步排查和尝试不同的解决方案,通常能找出问题的根源并成功解决。对于复杂的问题,可能需要深入了解JasperReport的工作原理和相关技术,如Java Servlets、XML解析以及PDF生成机制。

    解决jasperReports中文无法显示问题.rar

    在某些企业环境中,出于版权或安全考虑,直接使用外部字体可能受到限制,这时可能需要寻找其他解决方案,如使用Unicode通用字体或者自定义字体映射。 总的来说,jasperReports的中文显示问题主要是由于字体支持不足...

    jasperReport 亚洲语言包

    这样,当你设计和运行包含亚洲文字的jasperReport报告时,系统就能识别并正确显示这些文字,避免出现乱码或无法识别的问题。 总的来说,jasperReport的亚洲语言包通过iTextAsianCmaps.jar、iTextAsian.jar和一个较...

    ireport+jasperreport开发中问题解决方案

    以上是针对ireport+jasperreport开发中常见问题的解决方案,每个知识点都是报表设计中不可或缺的一部分,熟练掌握这些技巧将有助于提高报表开发的效率和质量。在实践中,还需要不断学习和尝试,以应对更多复杂场景下...

    jasperreport完整的jar包

    总的来说,JasperReport 是一个强大且灵活的报表解决方案,提供了全面的功能来满足企业级报告的需求。这个 "jasper-jar包" 包含了所有必要的库,使开发者能够轻松地在项目中集成 JasperReport,利用其强大的功能创建...

    JasperReport与iReport的配置与使用.docx

    iReport可以在有Ant环境和没有Ant环境下运行。在有Ant环境下,可以使用Ant来自动化报表的生成。在没有Ant环境下,可以使用iReport的图形化界面来设计和生成报表。 ### iReport设计环境中的乱码现象的解决 在...

    JasperReport实例导入可用

    - 设计时可预览布局,调整元素大小和位置,设置字体、颜色等样式。 - 数据绑定允许将字段直接关联到数据源,简化填充过程。 6. **数据处理** - 通过 Java 代码连接到数据源(如数据库),执行 SQL 查询获取数据...

    jaspreport 需要用到的中文字体jar

    本篇将详细探讨JasperReport在处理中文字符时的字体问题以及解决方案。 标题提及的"jaspreport 需要用到的中文字体jar"是指在生成包含中文字符的JasperReport PDF报告时,需要引入特定的字体库来确保正确显示中文。...

    JasperReport Server安装手册

    在安装 JasperReport Server 之前,需要先安装 Mysql 数据库。安装步骤如下: 1. 解压 Mysql 安装包:#tar zxvf mysql-5.0.18.tar.gz 2. 进入 Mysql 安装目录:#cd mysql-5.0.18 3. 配置 Mysql:#./configure --...

    JasperReport所需要的jar文件

    在集成这些`jar`文件到项目中时,确保它们在项目的`Classpath`中正确配置,这样`iReport`才能正常运行并生成报表。在实际开发中,可能还需要根据具体需求添加其他相关依赖,例如数据库驱动`jar`,以便连接和查询数据...

    jasperReport +spring 的使用

    在集成Spring框架的情况下,jasperReport能够更好地利用Spring提供的依赖注入、事务管理等功能,简化开发流程,提高代码的复用性。 #### 二、环境搭建及依赖配置 1. **安装iReport工具** - iReport是jasperReport...

    jasperreport 3.7.5 jar包修复PDF中文加粗等问题

    jasperreport 3.75版 jar包 ,修复PDF中中文不能加粗,倾斜等问题。

    JasperReport windows linux 后台打印实例 无需dll

    在Windows系统下,我们需要确保JasperReport的运行环境已经配置好,包括JRE(Java Runtime Environment)和相关的库文件。将"teach1.jasper"拷贝到C盘根目录是为了方便引用,这通常是为了简化路径设置,便于程序调用...

    jasperReport客户端打印。

    在运行时,这些模板将结合实际数据生成最终的报表。JRXML文件可以使用iReport这样的可视化编辑器来创建,iReport是JasperReport的一个配套工具,提供了一个友好的图形化界面。 客户端打印是指在用户的计算机上直接...

Global site tag (gtag.js) - Google Analytics