Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(七)-PDF中文显示

本文详细介绍了如何解决Jasperreports6.3.1和Jaspersoft Studio6.3.1在生成PDF报告时无法显示中文的问题。通过导入中文字体,配置fonts.xml文件并生成新的fonts.jar,成功实现了PDF中文显示。
摘要由CSDN通过智能技术生成

解决PDF无法显示中文问题

PDF生成预览无法显示中文

相信有同学已经发现了,当预览生成为PDF时,会发现一个非常严重的问题,那就是只显示英文与数字,中文完全无法显示。如下图。
这里写图片描述
选择用PDF预览,会打开电脑上安装的PDF查看软件。
这里写图片描述
这里写图片描述
生成的PDF文件中,所有中文都无法显示,这是模板预览生成的PDF文件,如果用JAVA工程生成相信也是一样无法看到中文,这跟我们想要的效果明显不符。

解决Jaspersoft studio生成PDF预览无法查看中文的问题

我们的模板设计软件Jaspersoft studio是可以选择字体,如果我们选择一个中文字体,会不会可以在预览中看到中文呢?注意,这里只是针对于Jaspersoft studio的预览查看,并不适用于Java工程中代码生成PDF无法显示中文问题。

我们选择一个中文字体试试

这里写图片描述
很奇怪的地方是上面的六个字体样式与下面的字体样式有一个明显的分隔线,它们有什么不同吗?这就是我们要讲解的重点。
上面的六个字体样式明显没有中文字体,那我们只好选择下面的字体了。
将语文的字体设为微软雅黑,再看看预览是否有效果。
这里写图片描述
源码里的描述如下:
这里写图片描述
生成预览
这里写图片描述
语文依然没有显示,这个方法无效果。

fonts字体包的作用

在工程目录,有三个自动导入的项目包,如下图,一个是Java JRE,其余两个都是Jasperreport工程相差的包
这里写图片描述
我们的重点是JasperReports Library里面的fonts字体包,展开该Jar包。
这里写图片描述
里面放置了许多.ttf字体文体,而这些字体的名称与模板的选择字体框上方的字体基本一致。
这里写图片描述
由此可以大胆猜测,这个fonts包里放的字体就是模板实际用于生成文件所用的字体,我们在模板里选择的字体在源码中可以看到是一个标签”fonts-name=dejavvu..”,当Jasperreports解析模板文件时,会根据这个字体的名字然后去fonts字体包中查找对应的字体,如果用就使用该字体,如果没有就使用一个默认的字体。

在Jaspersoft studio中导入中文字体.ttf文件

我们可以在studio中导入一个中文字体,来实现pdf预览可查看中文的效果。

1.打开选项设置,preferences

这里写图片描述

2.选中Fonts选项

这里写图片描述

3.点击Add,添加字体

这里写图片描述

4.设置字体名字

这里写图片描述
名字可以随便取,然后选取电脑上下载好的字体文件ttf格式的。
最重要的一步,选择PDF ENconding一定要选择这个选项Identity-H,要不然依然是显示空白的中文。至于为什么选择这个,是因为我在上一步选择的是从文件夹里导入字体文件,然后将电脑系统自带的Font文件夹给选中,结果是将所有几乎上百个是.tff格式的字体都给导进去了。
这里写图片描述
这里写图片描述
选择文件夹导入,如果是ttf的软件会自动分析pdf encoding,所以可以从这个方法知道华文宋体的编码方式。
为了显示方便,所以我删掉了没用的字体&#

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值