RegisterSystemDirectories 和其他方法有什么区别

问题描述

我正在使用 iText 7 .NET dll,我想知道 PdfFontFactory.RegisterSystemDirectories() 方法和以下方法之间有什么区别:

  • PdfFontFactory.CreateRegisteredFont("calibri",PdfEncodings.IDENTITY_H,True)
  • PdfFontFactory.RegisterDirectory("C:\Windows\Fonts\Calibri")
  • FontProgramFactory.RegisterFontDirectory("C:\Windows\Fonts\Calibri")
  • FontProgramFactory.CreateRegisteredFont("calibri")

因为当我要求 PdfFontFactory.GetRegisteredFonts() 时,结果仅受第一个影响,而不受其他影响。

我有时使用 OutOfMemoryException,我看到 RegisterSystemDirectories 将内存增加了 500 mb 而我只需要 12 种字体(“arial”、“calibri”、“comic”、 “乔治亚”、“lucida”、“segoe”、“时代”、“投石机”、“verdana”、“consola”)。如果我不注册它们,当我将带有这些字体之一的段落添加到我的 PdfDocument 时,会出现异常:“字体类型无效”。

所以我搜索一个注册这些家庭的解决方案。

非常感谢。

解决方法

我还没有/找到关于我的问题的任何答案,但我找到了另一种方法,可以满足我的要求:PdfFontFactory.Register("C:\Windows\Fonts\CALIBRI.TTF")。我应该为我想使用的每种字体都这样做,但它可以节省 400 mb 的内存!