Java 将JasperReport导出为PDF,缺少字符

Java 将JasperReport导出为PDF,缺少字符,java,pdf,jasper-reports,Java,Pdf,Jasper Reports,我有一个Java应用程序正在生成JasperReports。它将从一个报告中创建多达三个JasperPrints:一个在打印机上打印,一个序列化并保存到数据库,第三个使用Jasper的内置导出功能导出为PDF 问题是,当导出为PDF时,包含8位或更多位(即不是7位ASCII)的字符显示为空方块,这意味着Acrobat Reader无法显示该字符。打印版本正确,加载数据库版本并正确打印。如果我将PDF导出版本更改为其他格式,例如XML,则该字符在web浏览器中显示良好 根据证据,我相信这个问题与P

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

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

根据证据,我相信这个问题与PDF中的字体处理有关,但我不确定是什么

使用的字体是Lucida Sans打字机,一种Unicode单间距字体。Windows“font”目录列在Java类路径中:如果不执行此步骤,PDF导出将失败,完全没有文本,因此我知道它正在查找字体

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


你知道问题出在哪里吗?要检查的系统区域,或者可能是我需要发送到导出过程的参数?

在iReport中,尝试将文本字段的
Pdf Embedded
属性设置为true。

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

我使用的是Jasper Report 6,我的团队花了几天时间来显示高棉Unicode。我终于找到了解决办法,一切都如期进行

照此


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

在哪里设置该属性?很好的提示。我少了几个字符(主要是“Č”/“č”)。我将PDF编码设置为CP1250,现在它可以正常显示。你可以在JasperSoft Studio中的“高级选项”中为文本字段执行此操作。或者,您可以直接将pdfEncoding=“Cp1250”属性添加到字体定义中,例如: