将JasperReport导出为PDF,缺少字符

时间:2010-09-08 23:11:29

标签: java pdf jasper-reports

我有一个生成JasperReports的Java应用程序。它将从一个报告中创建多达三个JasperPrints:一个在打印机上打印,一个序列化并保存到数据库,第三个使用Jasper的内置导出功能导出为PDF。

问题是,当导出为PDF时,包含8位或更多位(即非7位ASCII)的字符显示为空方块,这意味着Acrobat Reader无法显示该字符。打印版本是正确的,加载数据库版本并打印它显示正确。如果我将PDF导出版本更改为其他格式,例如XML,这个角色在网络浏览器中显示得很好。

根据证据,我认为这个问题是PDF中字体处理的特定问题,但我不确定是什么。

使用的字体是Lucida Sans Typewriter,一种Unicode等宽字体。 Windows“字体”目录列在Java类路径中:如果没有这一步,PDF输出将完全失败,文本为零,所以我知道它正在找到字体。

未显示的特定字符是西班牙文中使用的重音字符:áéíóú。我没有检查ñ,但我猜这也行不通。

任何想法是什么问题,要检查的系统区域,或者我需要发送到导出过程的参数?

3 个答案:

答案 0 :(得分:2)

用于导出的PDF编码是UTF-8,显然字体不能正确支持。当我将其更改为ISO-8859-1时,每个字符都在PDF输出中正确显示。

答案 1 :(得分:0)

在iReport中,尝试将TextFields的Pdf Embedded属性设置为true。

答案 2 :(得分:0)

我正在使用Jasper Report 6,我的团队花了几天时间来展示高棉语。我终于找到了解决方案,一切都按预期工作。

关注此https://community.jaspersoft.com/wiki/custom-font-font-extension

导出后,将jar文件上传到lib文件夹并重新启动jasper服务器。