Jasper报告使用PDF和Unicode(希腊文)字符

|| 我有一个非常奇怪的问题:我试图将包含Unicode字符(希腊文)的Jasper报告导出为PDF。我的问题是,特定的希腊字符(字符delta)以与我正在使用的字体(Arial)不同的字体打印! 下图是从导出的pdf复制而来的: 下图是MS Word中使用相同字体的相同文本: 如您所见,第三个字母(delta)与其他字母不同。仅对于所有字体大小的字母而言,这种情况都会发生。我也尝试将字体更改为garamond,但是仍然遇到相同字母的问题! 最后,我应该补充一点,来自iReport的内部预览还可以,也可以导出为其他格式,例如docx或html ... 更新20/04/11:我也尝试使用Foxit Reader Portable打开pdf-但行为与Adobe Acrobat Reader完全相同。 更新28/04/11:我已经在pastebin中创建了一个片段,当导出为pdf时会产生问题。一个警告-您必须通过iReport的“选项-字体”来“安装”将使用的字体(在我的情况下为Arial),否则您将无法在pdf中看到任何内容。 更新13年5月3日解决方案:好吧,既然仍有一些人(可能来自希腊)仍然有相同的问题并查看此问题,我想进行另一次更新:我再次开始使用Jasper报告,但是现在我使用较新版本的Jasper(Jasper 5)和iReport(iReport 5)。现在一切正常,在PDF中没有问题的三角洲:)因此,如果遇到相同的问题,请尝试升级iReport和Jasper库! 更新13年5月4日最终评论:两年后,我能够使用有问题的希腊字符(delta)再次在系统上工作,并能够得出有关该问题的最终结论:因此,首先,我升级了我们使用Jasper到5.x仍然遇到问题!仅当我用从iReport 5.x创建(导出)的新字体更改了包含的字体扩展名(.jar)时,此问题才得到解决。因此,问题在于,在导出字体扩展名时,iReport 3.x(用于导出旧扩展名)无法正确导出希腊字符增量,而iReport 5.x可以很好地导出它。因此,我的建议仍然是正确的:任何遇到此问题的人都可以将Jasper版本升级到5.x,还可以通过iReprot 5.x重新导出字体扩展名。我真的希望我不会对此进行任何更新:)
已邀请:
字体扩展。答案是字体扩展。 (答案总是字体扩展。) 运行您的报告时,我得到了不同的结果:我看不到任何希腊字符。我可以通过更改字体来解决。或者我可以通过添加Arial作为字体扩展来解决。 (或者我可能可以通过将Arial放在类路径中的某个地方来解决它,但是不要这样做。这是在麻烦。)我前一段时间写过有关字体扩展的文章。创建它们是为了解决此类问题。那就是您应该使用的。 因为该报告对我的行为有所不同,所以我只能确定这就是答案。让我们知道
万一有人来看,从PHP和FPDF生成PDF文件时,我遇到了类似的问题。就我而言,问题(和解决方案)是: 当FPDF通过MakeFont生成字体信息文件(font.php)时,它会创建/ Differences编码序列(如PDF规范中所定义) 然后将其嵌入到PDF文件中。 / Differences序列使用\“ Adob​​e Glyph List \”中的名称(http://partners.adobe.com/public/developer/zh-cn/opentype/glyphlist.txt),该名称与Unicode字形名称不同。 ..查看此列表,我发现以下条目:
Delta;2206
Deltagreek;0394  <-- this is the correct unicode point
FPDF库使用的是“ Delta”名称(我认为)是为了显示数学上的“ delta”符号。 通过修补生成的.php字体信息文件,并将\'Delta \'更改为\'Deltagreek \',此问题得以解决。每个字体信息文件只需要执行一次。 尽管以上内容适用于PDF,FPDP和PHP,但我怀疑您在Jasper中遇到了相同的问题。您需要检查Jasper如何处理编码等。 希望这对某人有帮助:)

要回复问题请先登录注册