MigraDoc 私有字体错误 - 具有指定系列名称的条目已存在
MigraDoc Private Font Error - An entry with the specified family name already exists
我正在使用 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:具有指定系列名称的条目已存在
谁能帮我解决这个问题?
顾名思义 XPrivateFontCollection.Global
字体集是 全球性的 并且只存在一次。
您的代码应该只添加一次字体(对于第一个文档)而不是每次创建文档时。
编辑:
要仅执行一次代码,您可以使用另一个全局变量(例如静态 class 成员):
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);
}
}
}
我正在使用 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:具有指定系列名称的条目已存在
谁能帮我解决这个问题?
顾名思义 XPrivateFontCollection.Global
字体集是 全球性的 并且只存在一次。
您的代码应该只添加一次字体(对于第一个文档)而不是每次创建文档时。
编辑: 要仅执行一次代码,您可以使用另一个全局变量(例如静态 class 成员):
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);
}
}
}