我需要在iText中做这样的事情:
Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD);
但是使用ARIAL字体,我需要在Paragraph上使用TIMES NEW ROMAN字体。 我怎么能做到这一点?
感谢。
答案 0 :(得分:5)
你有问题。
Font.getFamily(string)仅适用于“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()
没有。