2010-10-04 88 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資產的文件夾