2011-04-19 74 views
9

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

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

i dont like this

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

this is much better

正如你可以看到,第三个字母(delta)与其他字母不同。对于所有字体大小,这只会发生在这封信上。我也尝试将字体更改为garamond,但仍然出现与完全相同的字母相同的问题!

最后,我要补充一点,从iReport的内部预览是好的,也行是出口到其他格式,如DOCX或HTML ...

更新20/04/11:我也试着用Foxit阅读器轻松打开PDF - 但与Adobe Acrobat Reader具有完全相同的行为。

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

更新13年5月3日SOLUTION:好,因为有些人(可能来自希腊)仍然有同样的问题,针对这一问题,我想再拍更新:我开始再次使用碧玉报告,但现在我正在使用更新版本的Jasper(Jasper 5)和iReport(iReport 5)。现在一切正常 - 在PDF中没有问题的增量:)所以,只要尝试升级iReport和Jasper库,如果你遇到同样的问题!

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

+1

什么情况使用福昕阅读器,Okular中,或xpdf? – 2011-04-19 22:39:36

+1

在iReport中为PDF生成设置的字符编码是什么?另见:http://www.fileformat.info/info/unicode/char/394/index.htm – 2011-04-22 19:06:55

+0

@Dave Jarvis:Pdf编码是一个不赞成的参数。无论如何,这是CP1250(中欧)在我的文本领域,我尝试了CP1253(希腊语),Identity-H,Identity-V没有运气 - 可能没有发生任何事情,因为depracation ...你有我的链接是有问题的角色 - 但我能做些什么呢? – Serafeim 2011-04-26 07:37:35

回答

2

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

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

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

+0

这似乎很有趣。问题是我已经换了工作,并且我不再使用碧玉(我以前的工作中的用户学会了喜欢不同的三角洲!)我无法检查你的答案,但是如果另一个有相同问题的人证实它有效,我会很乐意接受它。 – Serafeim 2011-12-23 09:44:27

1

如果有人来找我,在从PHP和FPDF生成PDF文件时,我遇到了类似的问题。在我的情况下,问题(和解决方案)是: 当FPDF通过MakeFont生成字体信息文件(font.php)时,它会创建一个/差异编码序列(在PDF规格中定义) 然后嵌入PDF文件。 /差异序列使用来自“Adobe字形列表”(http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt)的名称,这与Unicode字形名称不同。看着这份名单,我发现下面的条目:

Delta;2206 
Deltagreek;0394 <-- this is the correct unicode point 

的FPDF库用的是“增量”的名字,这(我认为)是为了显示数学计算“增量”的象征。

通过修补生成的.php字体信息文件,并将“Delta”更改为“Deltagreek”,问题就解决了。每个字体信息文件只需要执行一次。

虽然上述内容适用于PDF和FPDP和PHP,但我怀疑您遇到与Jasper相同的问题。你需要检查碧玉如何处理编码等

希望这有助于有人:)