2010-10-04 67 views
2

我很难尝试使用itextpdf生成包含希腊字母的PDF文件。我正在从外部源读取字符串作为UTF-8字符串。英文字母出现在结果中,但不是希腊字母。寻找问题,我想这可能与使用的字体有关。如果这是问题,我不知道要使用什么ttf文件。 下面是正在创建的字体itext PDF - 希腊字母未出现在生成的PDF文档中

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"UTF-8", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

任何帮助衷心地感谢!

回答

5

您需要使用包含希腊字符的字体。 您可能会发现希腊字典字体here

您可以检查示例here关于使用itext作者的Unicode字体。

+0

您指出的例子非常有帮助。我结束了使用arialuni.ttl,它的工作原理。非常感谢! – fadmaa 2010-10-04 20:38:25

+1

你能指点一下这个例子吗?或者,如果上述不能正常工作,请尝试使用希腊语: var bf = BaseFont(链接已停用)( – 2012-09-10 13:02:07

+0

@Yiannis Gkoufas:var bf = BaseFont.CreateFont(UnicodeFontPath,BaseFont.IDENTITY_H,BaseFont.EMBEDDED); – user2173353 2014-01-13 14:04:54

0

实际上问题可能会导致您创建字体的方式。代码页尝试使用“CP1253”而不是传递“UTF-8”。

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"CP1253", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

顺便说一句,BASEFONT有CP1250,CP1252和CP1257静态字符串constnts ...

0

我用这个代码:

BaseFont fonty = BaseFont.createFont("assets/ARIALBD.TTF", BaseFont.IDENTITY_H,  BaseFont.NOT_EMBEDDED); 
    fonty.setSubset(true); 
    Phrase myName = new Phrase("Your Not Latin Words", new Font(fonty,12)); 
    ColumnText.showTextAligned(canvas, 
      Element.ALIGN_LEFT, myName, 66, 400, 0); 

我不得不粘贴ARIALBD.TTF资产的文件夹