使用iText的系统字体

时间:2015-11-16 18:33:17

标签: java pdf fonts itext

我尝试使用iText在Java中生成PDF文档。 link

但我也想让用户有机会选择用于文档的字体。系统中安装了很多字体,我可以使用

列出它们
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

但是当我尝试直接将字体名称传递给BaseFont构造函数时

BaseFont.createFont(s, BaseFont.IDENTITY_H, true);

我得到像

这样的例外
com.lowagie.text.DocumentException: Font 'Abyssinica SIL' with 'Identity-H' is not recognized.

另一个选择是传递给BaseFont字体文件的路径(存储在jar或系统中的某个地方),但在第一种情况下,我必须使用我的应用程序部署所有字体,并且在第二种情况下,我必须考虑一种获取系统字体文件位置的方法。据我所知,Java对字体进行了一层抽象 - 公共API并不知道任何路径,并且不鼓励使用私有API(类似FontManager)。

另一种选择是使用BaseFont中声明的常量,但只提供4种字体(Courier,Helvetica,Symbol和Times Roman)。

有没有办法在PDF中使用系统字体,用iText生成而不用应用程序部署它们并使用像FontManager这样的解决方法?

0 个答案:

没有答案