MigraDoc私有字体错误 - 已存在具有指定系列名称的条目

时间:2015-09-28 14:18:22

标签: c# pdfsharp migradoc

我使用MigraDoc DLL(WPF版本)生成pdf,我添加了下面给出的代码,用于添加新的私有字体:

                XPrivateFontCollection pfc = XPrivateFontCollection.Global;
                Uri myuri = new Uri(Server.MapPath("/Assets/Rupee_Foradian.ttf"));
                pfc.Add(myuri, "./#Rupee Foradian");

PDF正确生成并正确加载字体并按预期显示,但是当我第二次尝试创建PDF时,我得到 ArgumentException:已存在具有指定系列名称的条目

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

1 个答案:

答案 0 :(得分:2)

由于名称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);
        }
    }
}