将JasperReport导出为PDF,字符丢失。

7
我有一个Java应用程序,它生成JasperReports报表。它会从单个报告创建多达三个JasperPrints:一个打印在打印机上,一个被序列化并保存到数据库中,第三个使用Jasper内置的导出功能导出为PDF。
问题是,在导出为PDF时,包含8个或更多位(即非7位ASCII)的字符显示为空方块,这意味着Acrobat Reader无法显示该字符。打印版本是正确的,并且加载数据库版本并打印它会正确显示。如果我将导出的PDF版本更改为不同的格式,例如XML,在Web浏览器中该字符会正常显示。
根据证据,我认为问题是PDF字体处理中的某些特定问题,但我不确定是什么。
所使用的字体是Lucida Sans Typewriter,一种Unicode等宽字体。Windows的“字体”目录在Java类路径中列出:没有这个步骤,PDF导出将彻底失败,根本没有文本,所以我知道它正在查找字体。
未显示的特定字符是西班牙文本中使用的重音字符:áéíóú。我没有检查过ñ,但我猜那也不行。
有什么想法是什么问题,需要检查哪些系统区域,或者可能需要向导出过程发送哪些参数?
3个回答

3

导出时使用的PDF编码为UTF-8,但字体似乎不支持该编码。当我将其更改为ISO-8859-1时,PDF输出中的每个字符都正确显示。


8
你要在哪里设置这个属性? - рüффп
很好的提示。我缺少了一些字符(主要是'Č'/'č')。 我将PDF编码设置为CP1250,现在它可以正确显示。您可以在JasperSoft Studio中的高级选项中为文本字段执行此操作。 或者您可以直接向字体定义添加pdfEncoding="Cp1250"属性,例如: <font fontName="yourFont" pdfEncoding="Cp1250"/> - Jake_3H

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

0

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

请参照这个https://community.jaspersoft.com/wiki/custom-font-font-extension

在你导出之后,将你的jar文件上传到lib文件夹,并重新启动你的Jasper服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接