如果这种变化对某人有帮助。
这是 VahidN 答案的变体。
在此解决方案中,您可以使用(至少在我们的文件系统上)Visual Studio 的字体文件夹中的字体。这使得 Visual Studio 项目更加独立(并且可能更“便携”)。因此,与其尝试在您的 Windows 操作系统上查找字体文件夹……这可能会在下次 Windows 开发新操作系统时发生变化,字体都在您的项目中。
请注意,对于我的特定项目,我需要“BaseFont.EMBEDDED”为真。这通常不是所有项目都需要的(请参阅此页面上的其他答案)。请根据您的项目的需要改变“FontFactory.GetFont()”的参数。有许多重载可用。
旁注:Windows 文件系统的字体文件夹不应更改。但在下一个版本的 Windows 中是否保证保持不变?另外,如果由于硬盘驱动器崩溃而将项目加载到新计算机上,并且您正在使用项目备份......您需要的字体是否已经在 Windows 文件系统的字体文件夹中?如果是这样,那就太好了。如果没有,你必须去拿它。通常没什么大不了的。但是,如果您已通过此解决方案将字体永久绑定到您的项目,那就少了一件麻烦事。
对代码的主要改动是:
而不是'Environment.GetEnvironmentVariable("SystemRoot")'
使用:System.Web.Hosting.HostingEnvironment.MapPath("\")
另请注意,“ttf”字体文件已放置在我的项目的“字体”文件夹中:
public static iTextSharp.text.Font GetFontAwesome()
{
string fontName = "fontawesome";
if (!FontFactory.IsRegistered(fontName))
{
var fontPath = System.Web.Hosting.HostingEnvironment.MapPath("\\") + "fonts\\fontawesome-webfont.ttf";
FontFactory.Register(fontPath, fontName);
}
var FontColour = new BaseColor(0, 0, 0); // optional... ints 0, 0, 0 are red, green, blue
int FontStyle = iTextSharp.text.Font.NORMAL; // optional
float FontSize = iTextSharp.text.Font.DEFAULTSIZE; // optional
return FontFactory.GetFont(fontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, FontSize, FontStyle, FontColour );
// last 3 arguments can be removed
}
然后调用函数...
var fontawesomeFont = GetFontAwesome();
使用功能:
Paragraph paragraph = new Paragraph();
paragraph.Add(new Chunk("Hello world! "));
paragraph.Add(new Chunk("\xf118", fontawesomeFont));
paragraph.Add(new Chunk("\xf14a", fontawesomeFont));
paragraph.Add(new Chunk("\xf0c8", fontawesomeFont));
paragraph.Add(new Chunk("\xf046", fontawesomeFont));
paragraph.Add(new Chunk("\xf096", fontawesomeFont));
document.Add(paragraph);
此变体还允许您通过上面的“new BaseColor(0, 0, 0)”随意更改颜色。 (如果需要,请尝试 (255,0,0) 为红色字体。)
仅供参考 - 特定于 fontawesome
我正在使用来自https://fontawesome.com/v4.7.0/cheatsheet/的字体真棒备忘单代码