我正在使用 font.BaseFont
获取使用
BaseFont
var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\"+fontname+".ttf";
FontFactory.Register(fontPath);
在大多数情况下它有效,但在某些字体的情况下它返回 Null。这是为什么?
编辑 1:
新的字体
是使用
FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
然后我使用 font.BaseFont
获取 BaseFont,这样我就可以为 Overcontent
Font
最佳答案
在大多数情况下,字体的实际名称与字体使用的文件名不同。您需要检查哪些名称已在 FontFactory
中注册,如我的书中所述。参见 http://tinyurl.com/itextsharpIIA2C11举一些例子;在该示例中,我们有一个名为 Computer Modern Regular
的字体 cmr10
。如果将 GetFont()
方法与 cmr10
一起使用,则不会获得该字体。
这是一个使用特定字体将已注册字体的名称作为 Paragraph
添加到 Document
的示例:
foreach (String f in FontFactory.RegisteredFonts) {
document.Add(new Paragraph(f, FontFactory.GetFont(f, "", BaseFont.EMBEDDED)));
}
如果您不想依赖真实名称,您也可以使用别名注册每种字体(寻找合适的 Register()
方法)。
关于c# - ItextSharp Font.BaseFont 为某些字体返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543193/