问题描述
table.Rows[0].Cells[4].AddParagraph("0123456789ABCDEFGHIJKLMnopQRSTUVWYXZ")
.Format.Font.ApplyFont(new Font("barcode",36));
...
var documentRenderer = new DocumentRenderer(_document);
documentRenderer.PrepareDocument(); //<--- crash here
它通过我的自定义字体解析器ResolveTypeface("barcode",false,false)
和GetFont("barcode.ttf")
达到了预期的效果。
然后它与ResolveTypeface("New",false)
一起出现。我不知道“新”来自哪里。
如果我将新的Font(“ barcode”,36)更改为新的Font(“ Arial”,36),一切都很好,并且永远不会要求使用“ New”的字体。我尝试了另一种字体,以防万一某个东西弄乱了。我查看了MigraDoc / PdfSharpCore的源代码,但没有看到对硬编码的“ New”字符串的引用。
解决方法
我最好的猜测是,MigraDoc到PDF的转换会从它用来解析的字体中查找FontFamily,然后在生成PDF时使用那个字体家族(不是原始的)。
这意味着两件事:
- 解决字体时,最好使用字体中的 exact 字体系列名称。
- 您的字体必须正确/没有损坏。在某个地方,它从我使用的字体中抢了“新”。