MigraDoc不识别某些已安装的TTF字体

时间:2014-11-12 12:35:24

标签: c# fonts migradoc

我正在使用MigraDoc使用提供的数据创建PDF到我在C#中的方法。对于大多数字体,PDF生成得很好,但我在系统上安装了一个名为“Dancing Script”的新字体。该字体在系统上可用,我可以将它与MS Word一起使用。我在SO上也看到了类似于我的查询的其他条目,但它们没有解决我的问题:

一个例子是: MigraDoc: Setting font for a document

我使用正确的名称,我的字体已安装并可在Word中使用。它是TTF字体。 MigraDoc识别系统中可用的字体,但在渲染PDF时,它将其呈现为san serif字体。

我在使用的字体可以在这里找到: http://www.impallari.com/dancing

我的原始代码是:

             if (MigraDoc.DocumentObjectModel.Font.Exists(letter.fontName))
            {
                paragraph.Format.Font = new MigraDoc.DocumentObjectModel.Font(letter.fontName);
            }
            else
            {
                paragraph.Format.Font = new MigraDoc.DocumentObjectModel.Font("Arial");
            }

我也试过这个:

Document document = new Document();
            Section section = document.AddSection();
            TextFrame tf;
            Paragraph paragraph;

            if (letter.fontName.ToLower().Equals("courier")) 
            {
                letter.fontName = "Courier New";
            }
            MigraDoc.DocumentObjectModel.Style style = document.Styles["Normal"];
            if (MigraDoc.DocumentObjectModel.Font.Exists(letter.fontName))
            {
                style.Font.Name = letter.fontName;
                style.Font.Name = "Fineliner Script Regular";
            }

但在这两种情况下,我都无法将字体渲染到PDF上。我收到了回复:

---- DEBUG ASSERTION FAILED ----

----断言短信---- 值与从字体图像检索的信息不同。 ----断言长信息----

2 个答案:

答案 0 :(得分:1)

我设法通过重新启动服务器来解决问题。这真是奇怪,因为字体在Word Pad和其他软件上工作正常,但由于某些原因MigraDoc无法重新启动它。希望这个简单的提示可以帮助遇到同样问题的其他人。

答案 1 :(得分:0)

我尝试使用名为style.Font.Name = "Dancing Script";的名称,MigraDoc在PDF中正确使用了它。

您没有显示任何代码。