【发布时间】:2015-05-13 19:48:37
【问题描述】:
我正在尝试使用私有(即系统上未安装)TrueType 字体将文本添加到 PDF 文档中并且遇到问题。我正在使用来自 NuGet 的 PDFSharp + MigraDoc WPF 版本 1.32.2608.0。
我在论坛和 StackOverFlow 上找到了许多项目。最新的是 this stackoverflow 文章,它指的是 PdfSharp 网站上的 this example。但是,此示例包含代码:
this.fontFamilies.Add(key, fontFamily);
在第 22 行,但我在程序集中找不到对 fontFamilies 的任何引用。
因此,我遵循了看起来像 excellent example 的方法,但它对我不起作用。当我使用这种方法时,我可以成功添加字体,但是当我开始使用命令时:
var font = new XFont(fontStyle.Name, new XUnit(fontStyle.SizePt, XGraphicsUnit.Point), XFontStyle.Regular, _fontOptions);
其中fontStyle.Name 是前面没有# 的字体名称。此时 PdfSharp 在 PdfSharp.Drawing 命名空间内的 private void Initialise() 方法内部中断。
此时检查 Initialise 方法中的变量:
- 找到字体家族,即
this.family != null - 找到字体,即
this.typeface != null
我假设它在if (!typeface2.TryGetGlyphTypeface(out typeface)) 线上中断,但我不能确定。
注意:我尝试了 .ttf 和 .otf 字体都无济于事。
有人能指点我正确的方向吗?
更新
最后我换成了PDFSharp WPF 1.50 beta,因为它的字体处理要好得多。请参阅此SO post 关于我的第二个问题以及解决我的问题的new font resolver 的信息。现在一切正常。
【问题讨论】: