2010-12-17 41 views
2

Times New Roman字體,我需要做這樣的事情在iText的:
在iText的(Java版本)

Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD); 

但不是使用Arial字體,我需要使用Times New Roman字體在一個段落。 我怎麼能做到這一點?

謝謝。

回答

5

您遇到問題。字體.getFamily(字符串)僅適用於「Base 14」字體,Helvetica,Times Roman,Courier(加上它們的粗體&斜體變體),再加上Symbol和ZapfDingbats。詢問它的任何內容,但其中一種字體將返回FontFamily.UNDEFINED。

您的代碼無法按照您認爲的方式工作。如果您碰巧遇到了Arial,那只是因爲它是默認字體。

你想要的是FontFactory.getFont(...)。在FontFactory可以按名稱返回給定字體之前,您需要註冊該字體的文件。最簡單的方法是調用FontFactory.registerDirectories(),它將枚舉已知操作系統用於存儲字體的所有目錄並註冊在此處找到的所有字體。這將需要更長的時間,取決於你有多少字體,這些字體有多大。很多CJKV字體都需要花費大量的時間來註冊...在30秒內,但我的系統野獸可能需要10-20秒才能完成(但我擁有很多大字體)。

您也可以使用FontFactory.register(fontPath)註冊單個文件,但這需要您知道在哪裏可以找到它們。

在任何情況下,你的代碼可以讀的東西,如:

FontFactory.registerDirectories(); 

Font fuente = FontFactory.getFont("Times New Roman"); 

仰起臉字體時FontFactory確實忽略大小寫。 Font.getFamily()沒有。

+0

感謝馬克,它工作得很好! – Lucas 2010-12-18 12:20:35