我正在尝试使用ITEXTSHARP将文本写入PDF。 目前我使用Basefont,但字体数量有限。有什么方法可以使用Normal System.Drawing.Fonts和Itextsharp?
var font = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);
var overContent = stamper.GetOverContent(index);
overContent.SetFontAndSize(font, fontSize);
答案 0 :(得分:3)
首先需要使用FontFactory注册字体,以获取任何System.Drawing.Font的基本字体。这样的东西就足够了:
string fontsFolder = string.Format(CultureInfo.InvariantCulture, "{0}\\Fonts", Environment.GetEnvironmentVariable("SystemRoot"));
FontFactory.RegisterDirectory(fontsFolder);
BaseFont myBaseFont = FontFactory.GetFont(mySysDrawFont.OriginalFontName, mySysDrawFont.Size, ConvertFontStyle(mySysDrawFont.Style)).BaseFont;
private static int ConvertFontStyle(FontStyle fontStyle)
{
switch (fontStyle)
{
case FontStyle.Regular:
return Font.NORMAL;
case FontStyle.Bold:
return Font.BOLD;
case FontStyle.Italic:
return Font.ITALIC;
case FontStyle.Underline:
return Font.UNDERLINE;
case FontStyle.Strikeout:
return Font.STRIKETHRU;
default:
return Font.UNDEFINED;
}
}
请记住,您应该只调用 RegisterDirectory 函数一次,而不是每次都这样,所以上面的方法只是一个例子。