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