`
PrideSnow
  • 浏览: 240860 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

JasperReport使用iText库来生成PDF,对于中文字体的支持的两种方式

阅读更多

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设计器,可以很方便的生成报表文件。针对上述两种解决方案,第一种方案可以直接在界面 中选择pdfFontNamepdfEncoding ,系统中已经集成了STSong-Light UniGB-UCS2-H,下拉列表中可以直接选到。

第二种方式下,iReport的路径下有一个fonts目录,其中包括一些TTF字体文件。在图形界面中选择pdfFontName的时候,只 能选择目录中存在的字体文件。如果想使用其他的TTF字体,可以实现把相关的字体从windows系统的fonts目录下拷贝到iReport fonts路径中,这些字体就会出现在pdfFontName的下拉列表中了。

分享到:
评论
2 楼 yose 2014-07-01  
    困扰了我多日的问题,终于解决了
1 楼 liliang0504 2010-02-26  
我用的iReport-nb-3.6.1,pdfFontName下面没有字体名称,直接输入STCAIYUN.TTF问题解决,太感谢了,困扰好久了的问题!

相关推荐

    解决jasperreport、itext生成pdf时符号换行,复刻word中文版式

    在使用jasperreport生成pdf时,会发现结尾为逗号或者句号时,若一行字数已满,逗号或者句号会在第二行展示,与常规的中文版式不相符。然而在word中,若遇到此类情况,会将文字缩进使得标点符号能在一行中展示,对于...

    jasperreport 生成pdf实现下载与打印

    标题中的“jasperreport生成pdf实现下载与打印”是指使用JasperReports库来创建PDF报告,并提供下载和打印功能。JasperReports是一个开源的Java报表工具,它允许开发者设计、生成和导出各种类型的报表,包括PDF、...

    java生成pdf包,IText2.1.7

    因此,iReport与iText通常一起使用,提供了一种方便的方式来设计和生成PDF报告。 在实际开发中,以下是一些关键步骤: 1. 引入iText相关库:将上述jar文件添加到项目的类路径中,以便在代码中使用它们。 2. 创建...

    使用JasperReport制作PDF所需要的包(1)

    5. **iTextAsian.jar**:这个库进一步扩展了iText的功能,特别针对亚洲字体和字符集,包括对CJK(Chinese, Japanese, Korean)字符的支持,确保在生成PDF时能正确显示亚洲文字。 在实际使用JasperReport生成PDF报告...

    jasperreport5.6.0生成pdf

    要使用 JasperReport 生成 PDF,需要先生成.jasper 文件,然后再使用 JasperReport 在程序中生成需要的报表格式。下面是使用 JasperReport 生成 PDF 的步骤: 1. 首先,需要生成.jasper 文件,这可以使用 iReport ...

    JasperReport中pdf显示中文最新jar

    在默认情况下,JasperReport使用的是iText库来生成PDF文档,但早期版本的iText对中文字符的支持并不完善,这就会导致在PDF中显示中文时出现乱码或无法显示的情况。 为了解决这个问题,我们需要引入两个特定的jar包...

    jasperReport 亚洲语言包

    总的来说,jasperReport的亚洲语言包通过iTextAsianCmaps.jar、iTextAsian.jar和一个较旧版本的iText库,提供了对中文和其他亚洲语言的全面支持,确保了在PDF报告中正确地呈现复杂的文本和字符。这在处理多语言报告...

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

    3. **库版本冲突**:JasperReport依赖于多个库,如iText用于PDF生成。如果这些库的版本不兼容或缺失,可能会影响PDF的生成。 4. **编码问题**:字符编码不一致可能导致某些字符无法正确显示,尤其是在处理非ASCII...

    jasperReport中文字体和配置.rar

    - **中文字体**:JasperReport默认使用的字体可能不包含中文字符,因此需要引入支持中文的字体库。常用的中文字体有宋体、黑体、微软雅黑等。将这些字体添加到项目中,然后在jrxml文件中通过`&lt;font&gt;`元素指定。例如...

    jasperreport 【中文字体依赖】jars

    标题中的"jasperreport 【中文字体依赖】jars"指的是在使用JasperReport生成包含中文字符的报表时,需要额外的字体库支持。由于Java默认的字体集不包含完整的中文字符集,因此,若要在报表中正确显示中文,必须引入...

    使用JasperReport制作PDF所需要的包(2)

    标题“使用JasperReport制作PDF所需要的包(2)”暗示了这是一个关于使用特定库来生成PDF的教程。描述中的“(2)”可能意味着这是一个系列教程的第二部分,主要关注的是所需的库文件。接下来,我们将逐一解析这些关键库...

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

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

    Jasperreport中文版.pdf

    JasperReport是一款功能强大的报表工具,它能够制作复杂的报表并具有多种数据源支持、格式化选项以及导出功能。JasperReport提供iReport Designer作为报表设计工具,它允许用户以可视化的方式设计报表布局和内容,...

    jasperreport6 导出pdf中文不显示问题解决方式

    jasperreport6版本以上已经对pdf font name、pdf encoding等配置弃用,而改为使用font配置字体,所以以前使用itext jar包的方式已经不能解决pdf中文不显示问题,那么修改fonts中的字体文件,可以一劳永逸解决该问题...

    jasperreport 生成pdf,html,xml,csv,xls报表,myeclipse源码

    1. **报表设计**:jasperreport使用JRXML格式的XML文件来定义报表布局和样式。这些设计文件可以包含文本、图像、表格、图表等多种元素,并支持复杂的排版和样式设置。 2. **数据绑定**:jasperreport支持多种数据源...

    itext-2.1.7-js7.zip

    《深入解析iText 2.1.7与JasperReport 6.10.0的协同...对于需要处理PDF文档和生成报表的项目,这两个库是不可或缺的利器。通过深入学习和实践,开发者可以充分利用它们的功能,提升工作效率,打造出高质量的PDF应用。

    JasperReport中文用户手册.pdf

    JasperReport中文用户手册.pdf

Global site tag (gtag.js) - Google Analytics