我使用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:已存在具有指定系列名称的条目
有人可以帮我解决这个问题吗?
答案 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);
}
}
}