繁体   English   中英

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

[英]Jasper reports with PDF and Unicode (greek) characters

我有一个非常奇怪的问题:我正在尝试将包含Unicode字符(希腊语)的Jasper报告导出为PDF。 我的问题是,一个特定的希腊字符(字符三角形)打印在与我正在使用的字体(Arial)不同的字体中!

从导出的pdf复制以下图像:

我不喜欢这个

以下图像是使用相同字体的MS Word中的相同文本:

这要好得多

如您所见,第三个字母(delta)与其他字母不同。 对于所有字体大小,此信件仅适用于此字母。 我也尝试将字体更改为garamond,但仍然遇到完全相同的字母同样的问题!

最后,我应该补充说iReport的内部预览是好的,也可以导出到其他格式,如docx或html ...

更新20/04/11:我还试图用福昕阅读器便携式打开PDF文件,但其行为与Adobe Acrobat Reader完全相同。

更新28/04/11:在pastebin中创建了一个片段,在导出为pdf时会产生问题。 一个警告 - 您必须通过iReport的“选项 - 字体”“安装”您将使用的字体(在我的情况下为Arial),否则您将无法在pdf中看到任何内容。

更新05/03/13解决方案:好吧,因为有人(可能来自希腊)仍有同样的问题并查看此问题,我想再次进行更新:我开始再次使用Jasper报告,但现在我正在使用更新版本的Jasper(Jasper 5)和iReport(iReport 5)。 现在一切正常 - 在PDF中没有问题的增量:)所以如果您遇到同样的问题,请尝试升级您的iReport和Jasper库!

更新05/04/13最终评论:两年后,我能够再次使用有问题的希腊字符(delta)在系统上工作,并能够得出关于该问题的最终结论:所以,首先我升级了版本贾斯珀我们使用5.x仍然遇到了问题! 只有当我使用从iReport 5.x创建(导出)的新字体扩展名(.jar)更改了包含的字体扩展名(.jar)时,问题才得以解决。 因此,问题是当导出字体扩展名时,iReport 3.x(用于导出旧扩展名)没有正确导出希腊字符增量,而iReport 5.x导出它很好。 所以我的建议仍然是正确的:任何有此问题的人都会将您的Jasper版本升级到5.x,但也会通过iReprot 5.x重新导出您的字体扩展名。 我真的希望我不会再对此更新:)

字体扩展。 答案是字体扩展。 (答案总是字体扩展。)

当我运行你的报告时,我得到了不同的结果:我没有看到任何希腊字符。 我可以通过更改字体来解决它。 或者我可以通过添加Arial作为字体扩展来解决它。 (或者我可以通过将Arial放入某个类路径来解决它...但不要这样做。它要求麻烦。)我曾经写过关于字体扩展的文章。 创建它们是为了解决此类问题。 这就是你应该使用的。

因为报告对我的表现不同,我只能确定这是答案。 让我们知道。

如果有人来看,我在从PHP和FPDF生成PDF文件时遇到了类似的问题。 在我的例子中,问题(和解决方案)是:当FPDF通过MakeFont生成字体信息文件(font.php)时,它会创建/差异编码序列(如PDF规范中所定义),然后嵌入PDF文件中。 / Differences序列使用“Adobe Glyph List”中的名称(http://partners.adobe.com/public/developer/en/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如何处理编码等。

希望这有助于某人:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM