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

Luc*_*cas 2 java pdf fonts itext

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

Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD);
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Mar*_*rer 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");
Run Code Online (Sandbox Code Playgroud)

在查找字体时,FontFactory确实忽略了大小写. Font.getFamily()才不是.