Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PDFsharp-使用专用字体_C#_Asp.net_Fonts_Pdfsharp - Fatal编程技术网

C# PDFsharp-使用专用字体

C# PDFsharp-使用专用字体,c#,asp.net,fonts,pdfsharp,C#,Asp.net,Fonts,Pdfsharp,我目前正在编写一段生成PDF文件的代码。为了遵循设计规范,我需要使用“Helvetica Neue Condensed Bold”字体。由于程序将在哪里运行,没有字体安装可用,我需要将其用作专用字体 它不起作用。我试过不同的姓氏,但我一次又一次地失败 byte[] data = File.ReadAllBytes(fontUri); XPrivateFontCollection.Global.AddFont(data, "#Helvetica Neue Condensed Bold"); 当我

我目前正在编写一段生成PDF文件的代码。为了遵循设计规范,我需要使用“Helvetica Neue Condensed Bold”字体。由于程序将在哪里运行,没有字体安装可用,我需要将其用作专用字体

它不起作用。我试过不同的姓氏,但我一次又一次地失败

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文件。我想不出来


是否有人知道我的问题并且可能知道我做错了什么?

当您下载PDFsharp源代码包时,您会发现一个使用私有字体的工作示例。
用这个开始。
解压后,请参阅文件夹“PDFSharp-migratedocfoundation-1_32\PDFSharp\samples\samples C#\基于GDI+\PrivateFonts”

如果你不能让它与你的字体一起工作,你至少会有一个SSCCE,你可以提交测试

可以在此处找到源代码:

或者使用NuGet的PDFsharp 1.50 beta版,您可以使用FontResolver处理私人字体。
请参见此处的示例解析器:

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


我使用的是WPF构建,而不是GDI构建。除此之外,Uri是错误的,familynames是以错误的方式输入的。

是否引发了一些异常?也许这会有所帮助:@activatedgeek:我没有任何异常。@SamY:无法使用它,使用PdfSharp。。XGraphics.DrawString方法需要XFont而不是字体。@SamY:正如文章中所说的,无法在服务器上安装字体(他们不想这样做)。我从链接下载了源代码,使用NuGet Package Manager在我的项目中添加了PdfSharp。我还通过解决方案资源管理器将这两种字体文件添加到我的项目文件夹中。当我构建应用程序时,它向我显示带有文本的pdf,但没有显示指定字体。对于这个例子,我需要一个特定的版本吗?我当前使用的版本是PDFsharp 1.32.3057.0您必须使用PDFsharp 1.32的WPF版本。调用XPrivateFontCollection.Add时,按照Windows的要求编写字体名称,前缀为“/#”。使用字体时,请按Word显示的字体名称书写。当您引用源代码中的项目而不是NuGet软件包时,您可以逐步浏览PDFsharp源代码,查看在XPrivateFontCollection中注册了哪些字体。然后您可以查看“Add()”是否成功,以及必须将哪个名称与“new XFont()”一起使用。示例解析器确实可以工作。我现在要用我的旧代码尝试PDF Sharp 1.32 WPF版本。可能是您必须编写“/#Helvetica Neue”和“Helvetica Neue”,而不是“/#Helvetica Neue Condented Bold”和“Helvetica Neue Condented Bold”。问题中给出的“#Helvetica Neue Condensed Bold”无法满足Windows的需要。/#”。这似乎无法解决问题。正如前面所说,我需要使用Windows字体查看器中使用的名称。因此,这将是“Helvetica Neue Condensed Bold”(并以./#作为姓氏)。我修复了在构造字体时忘记将XpdfFontOptions作为参数的问题。谢谢你的帮助!我知道这篇文章很老,但是你能提供相关的源代码吗?我有一个类似的问题,我不确定我错过了什么。我正在开发一个桌面应用程序,但我不知道为什么这会有很大的不同。