iReport与JasperReport中文支持全面解决
在使用iReport与JasperReport作为报表产生工具时, 中文支持是经常遇到的问题,笔者最近做的一个J2EE Web项目采用这套工具开发报表,也遇到了类似问题,本文总结了在使用iReport与JasperReport开发报表时中文支持的有关内容,希望能对读者有所帮助.
1 运行环境
1.1 JasperReport 1.2.8
JasperReports是iReport的核心内容。它是一个强有力的开源报表产生工具,可以将内容输出到屏幕上、打印机或生成PDF, HTML, XLS, CSV和XML等文件。它完全用Java编写,并可在各种Java应用(包括J2EE或WEB应用)中用来产生动态报表内容。JasperReports组织根据在一个XML文件中定义的报表设计通过JDBC访问关系数据库中的数据.填充报表数据之前必须先将报表设计被编译成一个jasper文件。
下载地址: http://jasperreports.sourceforge.net/
1.2 iReport 1.2 8
iReport是一个制作Jasperreport XML文件的优秀可视化开发工具,通过它可以方便的设计报表模板。目前最高版本为iReport 1.3.0
下载地址: http://ireport.sourceforge.net
1.3 iText 1.3.1
iText是一个开放源码的Java类库,是用来生成PDF文件的。
下载地址: http://itext.sourceforge.net
1.4 iTextAsian.jar
如果要在生成的pdf文件显示中文等亚洲字符,还必须下载itext的亚洲字符包。
下载地址: http://itextdocs.lowagie.com/downloads/iTextAsian.jar
以上四个包必须加到应用程序的构建路径中或加到CLASSPATH,若是Web应用放入相应的WEB-INF\lib\中。
2 设置中文支持
为了在报表中能够显示中文,加入以上四个包还不够(因为以上四个包仅对报表生成及中文显示提供了支持),必须设置报表上各显示对象的相关属性,各属性设置说明如下:
Font name: 宋体 (中文字体)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
PDF Embeded: √
如下图所示(显示对象的属性设置):
注意:此三项的设置必须确保iTextAsian.jar亚洲语言包已经包含在项目中,否则出现编译错误.
若读者觉得对每一个对象设置比较麻烦,可通过iReport的”Format””Fonts”菜单进行统一设置,并设成报表的默认字体。如下图所示:
3可能出现的问题
经过以上的设置,报表中文的显示应该没什么问题了,笔者在报表的开发过程中遇到几个问题,现总结如下:
3.1 问题描述
在WinXp中运行iReport1.2.8,设计报表时将数据字段的字体设置成中文字体,调好格式后编译并运行,并使用JRViewer进行预览一切正常(中文显示正常),但使用PDF、Excel预览出现如下错误:
Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : true
产生原因:成成PDF的亚洲语言包没有包含到项目中
解决办法:将亚洲语言包iTextAsian.jar包含到项中,可能过iReport的”Options””Classpath”将iTextAsian.jar添加Classpath中或者直接将iTextAsian.jar复制到iReport安装目录下的lib中.若是Web项目则应该将iTextAsian.jar复制到此项目的WEB-INF\lib\中.
3.2 问题描述
在WinXp中运行iReport1.2.8,设计报表时将数据字段的字体设置成中文字体,调好格式后编译并运行,并使用JRViewer进行预览一切正常(中文显示正常),使用PDF、Excel预览时无任何错误,但中文无法显示(只显示空白).
产生原因:报表显示对象的PDF字体属性设置不正确
解决办法: 报表对象有关字体属性的设置如下:
Font name: 宋体 (中文字体)
PDF font name: STSong-Light
PDF Encoding: UniGB-UCS2-H(Chinese Siplified)
PDF Embeded: √
即如下图所法
3.3问题描述
生成PDF、Excel文件时,中文显示一切正常,但生成Html文件时显示乱码
产生原因:主要是网页编码问题
解决方法
在JSP页中生成Html时,设置 <%@ page contentType="text/html;charset=GB2312" %>
在Servlet中生成Html时,response.setContentType("text/html;charset=GB2312");
若用户对项目进行了统一编码设定及过滤,则需要另作考虑,但主要还是集中在编码问题上.例如:笔者最近做的项目是其于Struts的,对编码进行了统一和过滤处理,生成Html页面时无需指编码就可正确生成Html页面,并不会出乱码,若设置成charset=GB2312反而出现了乱码.总之,对编码的统一与处理还是比较嘛烦的事.
另外, 我们通过查看iReport生成的jrxml(<?xml version="1.0" encoding="UTF-8" ?>)文件可以发现, iReport保存的汉字都是UTF-8编码。了解它的编码可以有助于我们统一编码方式。
分享到:
相关推荐
可以解决iReport中文乱码 提供两个jar包 可以解决乱码问题
以上就是针对IReport中文不显示及乱码问题的十几种解决方案,每种情况都有其特定的解决办法。在尝试时,请根据自己的具体情况进行操作,相信总有一种方法能帮你解决问题。如果问题依然存在,建议查阅IReport的官方...
针对描述中提到的"ireport中文乱码引入的jar",这很可能是解决乱码问题所需的特定JAR文件。这个文件可能包含了支持中文的字体或者编码处理的相关类。你需要将这个JAR添加到iReport的类路径中,具体步骤如下: 1. ...
IREPORT 问题解决方法可以分为乱码问题解决方法、画线注意事项、字段、线高度的设置、IREPORT 表达式、显示的数据自动折行、Styles 风格、报表中新建样式的设置、报表中统一字体的设置和字符集包引入等几个方面。...
本篇文章将详细讲解如何在Spring MVC项目中整合IReport来生成PDF,并解决可能出现的中文不显示和乱码问题。 首先,我们需要了解Spring MVC的基本概念。Spring MVC是Spring框架的一部分,它提供了一个模型-视图-控制...
iReport 5.6.0是其一个重要的版本,尤其在中文支持方面做出了显著的改进,确保了在设计报表时可以顺利地使用中文字体,解决了之前版本可能存在的中文显示问题。 在iReport 5.6.0中,主要知识点包括: 1. **中文...
这份文档对于那些正在使用或计划使用旧版Ireport的用户来说尤其宝贵,因为它可以解决很多在旧版软件中遇到的中文支持问题。 其次,"在Ireport4.0.1下实现PDF中文报表.pdf"则针对更新的Ireport4.0.1版本,详细讲解了...
总的来说,"ireport jar包,可解决PDF不显示"这个问题的解决方案在于添加支持中文的jar包,这样ireport在生成PDF报表时就能正确显示中文内容,避免出现乱码或者无法显示的问题。对于使用ireport进行报表开发的开发者...
iReport还解决了不少在报表设计中可能遇到的问题,比如中文字体乱码和PDF中无法正常显示的问题、报表分栏显示、去除记录中的null值、实现奇偶行不同背景颜色的交替显示、格式化输出、柱状图的横向显示、主报表和子...
- **导出报表时出现乱码**:检查报表设计中的字符集设置,确保与导出格式兼容。 - **报表布局显示不正确**:仔细检查布局设计,确保所有元素都正确放置且适应不同的数据量。 通过以上详细介绍,我们可以看到 ...
以上是针对ireport+jasperreport开发中常见问题的解决方案,每个知识点都是报表设计中不可或缺的一部分,熟练掌握这些技巧将有助于提高报表开发的效率和质量。在实践中,还需要不断学习和尝试,以应对更多复杂场景下...
6. **问题排查**:如果在实际应用中仍然遇到中文乱码,可以检查以下几个方面:数据库连接编码、源代码中的字符编码设置、报表XML文件的编码声明,以及服务器和客户端的环境变量配置。 总之,Ireport处理PDF中文输出...
6. 解决报表问题:文档列举了一些常见的报表问题以及它们的解决方案,例如中文字体乱码、PDF中无法显示、报表分栏、空值处理、背景颜色交替、格式化输出、柱状图方向、报表参数传递、不同文件格式导出、Web应用中...
#### 五、常见问题及解决方法 1. **无法连接数据库**: - 检查数据库连接信息是否正确。 - 确认数据库服务是否正在运行。 - 检查防火墙设置是否阻止了连接。 2. **报表导出时出现乱码**: - 设置正确的字符...
这两份文档可能详细介绍了如何在IReport 4.0.1版本中处理中文字符,解决乱码问题,以及如何设置PDF输出的字体、样式和排版,确保在不同环境下都能正确显示。 总的来说,这个合集涵盖了IReport从入门到进阶的多个...
本主题将深入探讨如何利用`iReport`进行Web环境下的报表开发,以及解决其中遇到的中文不显示问题。 首先,`iReport`是基于`JasperReports`库的一个设计工具,用于设计`.jasper`格式的报表模板。这些模板可以包含...