您的位置:首页 > 编程语言 > ASP

iReport与JasperReport中如何支持pdf中文显示

2014-08-13 10:44 501 查看
/**
个人表示目前在用ireport5.5.1,按照以下方法可以解决
*/


最近在使用grails开发程序,需要生成报表,我选择了用iReport与作为报表产生工具时, 在输入中文的时候总是无法正常显示,我的ireport的版本是3.7。后来经过网上查询自己测试,总结如下:



无法显示中文是因为ireport是使用itext来实现生成pdf的,其中又需要iTextAsian.jar 的支持。最新版本的iReport已经将iText和iTextAsian放在了安装目录的/report/modeues/ext/目录下,但是并没有关联上,需要做如下操作:

1、在“工具”--“选项”中选择“Classpath”,将以上两个模块包含进去;

2、在“工具”--“选项”中选择“Font”,在下面的pdf fonts path中将以上两个模块选中;

3、设置报表上各显示对象的相关属性,各属性设置说明如下:

Font name: 宋体 (中文字体)

PDF font name: STSong-Light

PDF Encoding: UniGB-UCS2-H(Chinese Siplified)

PDF Embeded: √

下面内容为转载:

可能出现的问题

经过以上的设置,报表中文的显示应该没什么问题了,笔者在报表的开发过程中遇到几个问题,现总结如下:

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编码。了解它的编码可以有助于我们统一编码方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: