我想使用iTextSharp编写一些文本。我正在使用这种方法:

var font = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);

我的问题是:iTextSharp是否支持系统字体目录中的所有字体?

假设用户在字体选择器对话框中选择了一种名为“mycoolfont”的字体。我可以这样创建新的iTextSharp字体吗?
var font = BaseFont.CreateFont("mycoolfont", BaseFont.WINANSI, BaseFont.EMBEDDED);
overContent.SetFontAndSize(font, fontSize);

更新:

我尝试了var font = BaseFont.CreateFont("Verdana", BaseFont.WINANSI, BaseFont.EMBEDDED);,但得到了itextsharp无法识别的错误“Verdana”

最佳答案

首先,您需要注册字体,然后从FontFactory中检索它(并且不要每次都创建它):

public static iTextSharp.text.Font GetTahoma()
{
    var fontName = "Tahoma";
    if (!FontFactory.IsRegistered(fontName))
    {
         var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\tahoma.ttf";
         FontFactory.Register(fontPath);
    }
    return FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
}

10-01 13:50