c# - ItextSharp Font.BaseFont 为某些字体返回 Null

标签 c# fonts itext

我正在使用 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/

相关文章:

c# - 如何在 iTextSharp 中绘制垂直渐变?

java - 提取 PDF 中的表格数量

c# - 当线程等待到达锁定语句时记录

c# - 从 WCF 服务操作返回 EF4 POCO 时引发 CommunicationException

css - 我的字体有不同的问题

html - 如果本地不存在如何预加载字体?

c# - 无法在 C# 中加载 pdf 文档

c# - 为多个客户组合数据库 - 好主意?

c# - 是否可以将 SQLite.NET 与不可变记录类型一起使用?

python - 如何在我的 PySimpleGUI 桌面应用程序中使用 Google Fonts?