iText时代新罗马字体(Java版)

iText时代新罗马字体(Java版),java,pdf,fonts,itext,Java,Pdf,Fonts,Itext,我需要在iText中执行类似的操作: Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD); 但我需要在段落上使用泰晤士报新罗马字体,而不是使用ARIAL字体。 我怎样才能做到这一点 谢谢。你有问题 getFamily(string)仅适用于“Base 14”字体、Helvetica、Times Roman、Courier(及其粗体和斜体变体)、Symbol和ZapfDingbats。除了其中一种字体之外,向其请求任何内容都将返回

我需要在iText中执行类似的操作:

Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD);
但我需要在段落上使用泰晤士报新罗马字体,而不是使用ARIAL字体。 我怎样才能做到这一点

谢谢。

你有问题

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