问题描述
我正在使用 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 的内存!