我正在使用font.BaseFont
来获取使用
BaseFont
字体
var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\"+fontname+".ttf";
FontFactory.Register(fontPath);
在大多数情况下它可以工作,但是在某些字体的情况下,它会返回Null。为什么会这样?
编辑1:
使用
创建新的Font
FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
然后我使用font.BaseFont
获取BaseFont,以便为Font
设置Overcontent
答案 0 :(得分:1)
在大多数情况下,字体的实际名称与用于字体的文件名不同。您需要按照我的书中的说明检查使用FontFactory
注册的名称。有关示例,请参阅http://tinyurl.com/itextsharpIIA2C11;在该示例中,我们有一个字体cmr10
,其名称为Computer Modern Regular
。如果对GetFont()
使用cmr10
方法,则不会获得该字体。
这是一个使用该特定字体将注册字体的名称添加为Paragraph
到Document
的示例:
foreach (String f in FontFactory.RegisteredFonts) {
document.Add(new Paragraph(f, FontFactory.GetFont(f, "", BaseFont.EMBEDDED)));
}
如果您不想依赖真实姓名,您还可以使用别名注册每种字体(查找相应的Register()
方法)。