C# MigraDoc专用字体错误-具有指定姓氏的条目已存在

C# MigraDoc专用字体错误-具有指定姓氏的条目已存在,c#,pdfsharp,migradoc,C#,Pdfsharp,Migradoc,我使用MigraDoc DLL(WPF build)生成pdf,并添加了以下代码,用于添加新的专用字体: XPrivateFontCollection pfc = XPrivateFontCollection.Global; Uri myuri = new Uri(Server.MapPath("/Assets/Rupee_Foradian.ttf")); pfc.Add(myuri, "./#Rup

我使用MigraDoc DLL(WPF build)生成pdf,并添加了以下代码,用于添加新的专用字体:

                XPrivateFontCollection pfc = XPrivateFontCollection.Global;
                Uri myuri = new Uri(Server.MapPath("/Assets/Rupee_Foradian.ttf"));
                pfc.Add(myuri, "./#Rupee Foradian");
正确加载字体并按预期显示时,PDF成功生成,但当我第二次尝试创建PDF时,我得到一个参数异常:具有指定姓氏的条目已存在


有人能帮我解决这个问题吗?

因为名称
XPrivateFontCollection.Global
意味着字体集合是全局的,并且只存在一次

代码应该只添加一次字体(对于第一个文档),而不是每次创建文档时

编辑: 要仅执行一次代码,您可以使用另一个全局变量(例如静态类成员):


那么,如何在代码中只添加一次呢@内维尔更新了我的帖子。非常感谢!谢谢你!
static bool _privateFontsInstalled;

private static void LoadPrivateFonts()
{
    if (!_privateFontsInstalled)
    {
        try
        {
            Uri uri = new Uri("pack://application:,,,/");
            PdfSharp.Drawing.XPrivateFontCollection.Add(uri, "...");
            PdfSharp.Drawing.XPrivateFontCollection.Add(uri, "...");
            PdfSharp.Drawing.XPrivateFontCollection.Add(uri, "...");

            _privateFontsInstalled = true;
        }
        catch
        {
            Debug.Assert(false);
        }
    }
}