在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就可以了.
分享到:
相关推荐
jasperreport 用maven打包后找不到字体解决方案 net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font
- **字体嵌入**:为了确保在不同环境下报表都能正确显示,可以将字体嵌入到生成的PDF中。在JasperReport API中,可以使用`net.sf.jasperreports.engine.type.EmbeddedFontEnum`来指定是否嵌入字体。 3. **配置文件...
本主题聚焦于JasperReport在处理中文字符时遇到的问题及其解决方案,特别是关于中文字体的依赖。 标题中的"jasperreport 【中文字体依赖】jars"指的是在使用JasperReport生成包含中文字符的报表时,需要额外的字体...
在IT行业中,报表生成工具是...通过逐步排查和尝试不同的解决方案,通常能找出问题的根源并成功解决。对于复杂的问题,可能需要深入了解JasperReport的工作原理和相关技术,如Java Servlets、XML解析以及PDF生成机制。
在某些企业环境中,出于版权或安全考虑,直接使用外部字体可能受到限制,这时可能需要寻找其他解决方案,如使用Unicode通用字体或者自定义字体映射。 总的来说,jasperReports的中文显示问题主要是由于字体支持不足...
这样,当你设计和运行包含亚洲文字的jasperReport报告时,系统就能识别并正确显示这些文字,避免出现乱码或无法识别的问题。 总的来说,jasperReport的亚洲语言包通过iTextAsianCmaps.jar、iTextAsian.jar和一个较...
以上是针对ireport+jasperreport开发中常见问题的解决方案,每个知识点都是报表设计中不可或缺的一部分,熟练掌握这些技巧将有助于提高报表开发的效率和质量。在实践中,还需要不断学习和尝试,以应对更多复杂场景下...
总的来说,JasperReport 是一个强大且灵活的报表解决方案,提供了全面的功能来满足企业级报告的需求。这个 "jasper-jar包" 包含了所有必要的库,使开发者能够轻松地在项目中集成 JasperReport,利用其强大的功能创建...
iReport可以在有Ant环境和没有Ant环境下运行。在有Ant环境下,可以使用Ant来自动化报表的生成。在没有Ant环境下,可以使用iReport的图形化界面来设计和生成报表。 ### iReport设计环境中的乱码现象的解决 在...
- 设计时可预览布局,调整元素大小和位置,设置字体、颜色等样式。 - 数据绑定允许将字段直接关联到数据源,简化填充过程。 6. **数据处理** - 通过 Java 代码连接到数据源(如数据库),执行 SQL 查询获取数据...
本篇将详细探讨JasperReport在处理中文字符时的字体问题以及解决方案。 标题提及的"jaspreport 需要用到的中文字体jar"是指在生成包含中文字符的JasperReport PDF报告时,需要引入特定的字体库来确保正确显示中文。...
在安装 JasperReport Server 之前,需要先安装 Mysql 数据库。安装步骤如下: 1. 解压 Mysql 安装包:#tar zxvf mysql-5.0.18.tar.gz 2. 进入 Mysql 安装目录:#cd mysql-5.0.18 3. 配置 Mysql:#./configure --...
在集成这些`jar`文件到项目中时,确保它们在项目的`Classpath`中正确配置,这样`iReport`才能正常运行并生成报表。在实际开发中,可能还需要根据具体需求添加其他相关依赖,例如数据库驱动`jar`,以便连接和查询数据...
在集成Spring框架的情况下,jasperReport能够更好地利用Spring提供的依赖注入、事务管理等功能,简化开发流程,提高代码的复用性。 #### 二、环境搭建及依赖配置 1. **安装iReport工具** - iReport是jasperReport...
jasperreport 3.75版 jar包 ,修复PDF中中文不能加粗,倾斜等问题。
在Windows系统下,我们需要确保JasperReport的运行环境已经配置好,包括JRE(Java Runtime Environment)和相关的库文件。将"teach1.jasper"拷贝到C盘根目录是为了方便引用,这通常是为了简化路径设置,便于程序调用...
在运行时,这些模板将结合实际数据生成最终的报表。JRXML文件可以使用iReport这样的可视化编辑器来创建,iReport是JasperReport的一个配套工具,提供了一个友好的图形化界面。 客户端打印是指在用户的计算机上直接...