iText中的TIMES NEW ROMAN字体(Java版)

时间:2010-12-17 19:35:28

标签: java pdf fonts itext

我需要在iText中做这样的事情:

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

但是使用ARIAL字体,我需要在Paragraph上使用TIMES NEW ROMAN字体。 我怎么能做到这一点?

感谢。

1 个答案:

答案 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()没有。