我有一个生成JasperReports的Java应用程序。它将从一个报告中创建多达三个JasperPrints:一个在打印机上打印,一个序列化并保存到数据库,第三个使用Jasper的内置导出功能导出为PDF。
问题是,当导出为PDF时,包含8位或更多位(即非7位ASCII)的字符显示为空方块,这意味着Acrobat Reader无法显示该字符。打印版本是正确的,加载数据库版本并打印它显示正确。如果我将PDF导出版本更改为其他格式,例如XML,这个角色在网络浏览器中显示得很好。
根据证据,我认为这个问题是PDF中字体处理的特定问题,但我不确定是什么。
使用的字体是Lucida Sans Typewriter,一种Unicode等宽字体。 Windows“字体”目录列在Java类路径中:如果没有这一步,PDF输出将完全失败,文本为零,所以我知道它正在找到字体。
未显示的特定字符是西班牙文中使用的重音字符:á
,é
,í
,ó
和ú
。我没有检查ñ
,但我猜这也行不通。
任何想法是什么问题,要检查的系统区域,或者我需要发送到导出过程的参数?
答案 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服务器。