2015-07-13 105 views
2

我目前正在研究生成PDF文件的一小段代码。要遵循设计规范,我需要使用'Helvetica Neue Condensed Bold'字体。作为程序运行的地方,没有可用的字体安装,我需要将它用作私人字体。PDFsharp - 使用私人字体

它不起作用。我尝试了不同的姓氏等,但我一直在失败...

byte[] data = File.ReadAllBytes(fontUri); 
XPrivateFontCollection.Global.AddFont(data, "#Helvetica Neue Condensed Bold"); 

而当我想使用字体。

XFont big = new XFont("Helvetica Neue Condensed Bold", 36, XFontStyle.Regular); 

但是,这一直在一直失败。我已经将文件导入到我的项目中,它是一个.ttf文件。我想不明白。

有没有人知道我的问题,也许知道我做错了什么?

+0

您是否抛出了一些异常? – activatedgeek

+0

也许这将有助于:https://msdn.microsoft.com/en-us/library/y505zzfw.aspx – SamY

+0

@activatedgeek:我没有得到任何例外。 –

回答

1

当您下载PDFsharp源码包时,您会发现一个使用专用字体的工作示例。
使用它开始。
解压缩后,请参阅“PDFSharp-MigraDocFoundation-1_32 \ PDFsharp \ samples \ Samples C#\ Based on GDI + \ PrivateFonts”文件夹。

如果你不能使用你的字体,你至少会有一个你可以提交测试的SSCCE。

的源代码可以在这里找到:
http://pdfsharp.codeplex.com/releases

也许使用PDFsharp 1.50测试版从那里的NuGet您使用FontResolver私人字体工作。
看样解析器这里:
http://forum.pdfsharp.net/viewtopic.php?p=8961#p8961

+0

我从链接下载了源代码,使用NuGet Package Manager在我的项目中添加了PdfSharp。我还通过解决方案资源管理器将这两种字体文件添加到我的项目文件夹中。 当我构建应用程序时,它向我展示了带有文本的pdf,但不带有指定的字体。我是否需要为此示例获得某个版本?我目前使用的版本是PDFsharp ** 1.32.3057.0 ** –

+0

您必须使用PDFsharp 1.32的WPF版本。当调用XPrivateFontCollection.Add时,按Windows所期望的那样写入字体名称,前缀为“./#”。使用字体时,请在Word显示字体名称时写入字体名称。当您从源代码而不是NuGet软件包中引用项目时,则可以逐步浏览PDFsharp源代码,以查看在XPrivateFontCollection中注册了哪些字体。然后,您可以看到“Add()”是否成功,以及“new XFont()”必须使用哪个名称。 –

+0

示例解析器确实有效。我将尝试PDF Sharp 1。32 WPF现在用我的旧代码构建。 –

0

我已经成功地解决了这个问题。

我正在使用WPF构建而不是GDI构建。除此之外,Uri是错误的,并且家人姓名是错误的。

+1

我知道这篇文章很旧,但你能提供相关的源代码吗?我有类似的问题,我不知道我错过了什么。我正在开发一个桌面应用程序,但我不知道为什么这会产生重大影响。 – Andrew