JasperReport使用iText库来生成PDF,报表中包括两种字体设置:报表字体和PDF字体。报表字体用于其他形式的报表的字体设置,而PDF字体用于到处的PDF中的字体设置。PDF字体信息将传递给iText,由iText根据不同的字体设置,形成PDF。如果不进行特殊的设置,报表在导出PDF以后,其中的中文信息显示不出来。针对这个问题,提供两种解决方案。
iText对字体的支持,包括多种方式,详见:http://itextdocs.lowagie.com/tutorial/fonts/getting/index.html。对于中文字体的支持,我们介绍两种方式:
1.使用iTextAsian.jar
iTextAsian.jar是一个亚洲字体包,里面包含几种简单的亚洲字体,其中包含简体中文字体。使用iTextAsian.jar,其实 是采用了iText字体解决方案中的“Fonts from jar”方式,从jar包中提取字符集编码方式和字体。需要把iTextAsian.jar放到类路径下,在报表文件(jrxml)中,文本区域的字体设置如下:<font pdfFontName=”STSong-Light” isPdfEmbedded =”true” pdfEncoding =”UniGB-UCS2-H”/>。这样,就能够正常的显示中文信息。
这种方法虽然能够正常地显示中文信息,但是有一个缺点,就是只有一种字体。因为iText官方网站提供的iTextAsian.jar包中只包 含几种简单的亚洲字体,对于简体中文来说,只有宋体。因此,采用这种方法生成的PDF中,中文字体只能为宋体,无法显示其他字体。当然,可以通过扩展 iTextAsian.jar的方式解决这个问题,在这个包中增加其他的字体。但是我还没找到其他的扩展包,也许以后会有人实现其他字体。
2.使用 TTF Files (True Type Fonts)字体文件
TTF是系统的标准字体文件,最初由Mac OS定义,后来Microsoft Windows普遍采用这种格式来定义字体文件。这也是目前我们最常用的字体格式。可以通过制定具体的字体文件的方式来指定字体。如:<font fontName=”隶书” pdfFontName=”STCAIYUN.TTF” size=”18″ isBold=”true” isPdfEmbedded =”true” pdfEncoding =”Identity-H”/>
例子中使用的是“华文彩云”字体,STCAIYUN.TTF为字体文件。需要注意的一点,这里使用的是相对路径,在生成PDF的时候,程序会从类路径中查找这个字体文件,你可以选择把字体文件放到类路径中,或者使用绝对路径来引用这个字体文件(如:c:/windows/fonts /STCAIYUN.TTF)。不推荐采用后一种方法,因为开发环境和使用环境中,系统的路径可能不同,就会导致无法找到字体文件。一种更好的解决办法,把windows系统中fonts下的某些常用的字体打成一个jar包,然后把这个jar报放到类路径下即可。
注意,在使用这种方式的时候,pdfEncoding 属性要设为”Identity-H”或者”Identity-V”。
关于iReport
iReport是一个可视化的JarsperReport设计器,可以很方便的生成报表文件。针对上述两种解决方案,第一种方案可以直接在界面 中选择pdfFontName和pdfEncoding ,系统中已经集成了”STSong-Light” 和 “UniGB-UCS2-H”,下拉列表中可以直接选到。
第二种方式下,iReport的路径下有一个fonts目录,其中包括一些TTF字体文件。在图形界面中选择pdfFontName的时候,只 能选择目录中存在的字体文件。如果想使用其他的TTF字体,可以实现把相关的字体从windows系统的fonts目录下拷贝到iReport的 fonts路径中,这些字体就会出现在pdfFontName的下拉列表中了。
分享到:
相关推荐
标题中的“jasperreport生成pdf实现下载与打印”是指使用JasperReports库来创建PDF报告,并提供下载和打印功能。JasperReports是一个开源的Java报表工具,它允许开发者设计、生成和导出各种类型的报表,包括PDF、...
在使用jasperreport生成pdf时,会发现结尾为逗号或者句号时,若一行字数已满,逗号或者句号会在第二行展示,与常规的中文版式不相符。然而在word中,若遇到此类情况,会将文字缩进使得标点符号能在一行中展示,对于...
因此,iReport与iText通常一起使用,提供了一种方便的方式来设计和生成PDF报告。 在实际开发中,以下是一些关键步骤: 1. 引入iText相关库:将上述jar文件添加到项目的类路径中,以便在代码中使用它们。 2. 创建...
5. **iTextAsian.jar**:这个库进一步扩展了iText的功能,特别针对亚洲字体和字符集,包括对CJK(Chinese, Japanese, Korean)字符的支持,确保在生成PDF时能正确显示亚洲文字。 在实际使用JasperReport生成PDF报告...
3. **库版本冲突**:JasperReport依赖于多个库,如iText用于PDF生成。如果这些库的版本不兼容或缺失,可能会影响PDF的生成。 4. **编码问题**:字符编码不一致可能导致某些字符无法正确显示,尤其是在处理非ASCII...
要使用 JasperReport 生成 PDF,需要先生成.jasper 文件,然后再使用 JasperReport 在程序中生成需要的报表格式。下面是使用 JasperReport 生成 PDF 的步骤: 1. 首先,需要生成.jasper 文件,这可以使用 iReport ...
标题提及的"jaspreport 需要用到的中文字体jar"是指在生成包含中文字符的JasperReport PDF报告时,需要引入特定的字体库来确保正确显示中文。描述中提到的“PDF需要乱码,或个别字体出面乱码,把jar解压到lib下面”...
在默认情况下,JasperReport使用的是iText库来生成PDF文档,但早期版本的iText对中文字符的支持并不完善,这就会导致在PDF中显示中文时出现乱码或无法显示的情况。 为了解决这个问题,我们需要引入两个特定的jar包...
总的来说,jasperReport的亚洲语言包通过iTextAsianCmaps.jar、iTextAsian.jar和一个较旧版本的iText库,提供了对中文和其他亚洲语言的全面支持,确保了在PDF报告中正确地呈现复杂的文本和字符。这在处理多语言报告...
- **中文字体**:JasperReport默认使用的字体可能不包含中文字符,因此需要引入支持中文的字体库。常用的中文字体有宋体、黑体、微软雅黑等。将这些字体添加到项目中,然后在jrxml文件中通过`<font>`元素指定。例如...
jasperreport 3.75版 jar包 ,修复PDF中中文不能加粗,倾斜等问题。
jasperreport6版本以上已经对pdf font name、pdf encoding等配置弃用,而改为使用font配置字体,所以以前使用itext jar包的方式已经不能解决pdf中文不显示问题,那么修改fonts中的字体文件,可以一劳永逸解决该问题...
标题中的"jasperreport 【中文字体依赖】jars"指的是在使用JasperReport生成包含中文字符的报表时,需要额外的字体库支持。由于Java默认的字体集不包含完整的中文字符集,因此,若要在报表中正确显示中文,必须引入...
标题“使用JasperReport制作PDF所需要的包(2)”暗示了这是一个关于使用特定库来生成PDF的教程。描述中的“(2)”可能意味着这是一个系列教程的第二部分,主要关注的是所需的库文件。接下来,我们将逐一解析这些关键库...
1. **报表设计**:jasperreport使用JRXML格式的XML文件来定义报表布局和样式。这些设计文件可以包含文本、图像、表格、图表等多种元素,并支持复杂的排版和样式设置。 2. **数据绑定**:jasperreport支持多种数据源...
JasperReport是一款功能强大的报表工具,它能够制作复杂的报表并具有多种数据源支持、格式化选项以及导出功能。JasperReport提供iReport Designer作为报表设计工具,它允许用户以可视化的方式设计报表布局和内容,...
这个“JasperReport中文翻译用户手册”是专为初学者设计的指南,旨在帮助用户理解和掌握JasperReport的各项功能,从而有效地利用它来设计和展示各种数据报告。 JasperReport的核心特性包括: 1. **模板设计**:...