【问题标题】:PDFsharp - Use private fontPDFsharp - 使用私有字体
【发布时间】:2015-07-13 09:07:11
【问题描述】:

我目前正在编写一小段代码来生成 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 文件。我想不明白。

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

【问题讨论】:

  • 你有抛出异常吗?
  • @activatedgeek:我没有发现任何异常。
  • @SamY:不能使用它,使用 PdfSharp.. XGraphics.DrawString 方法需要 XFont 而不是字体。
  • @SamY:正如帖子中所说,无法在服务器上安装字体(他们不想这样做)。

标签: c# asp.net fonts pdfsharp


【解决方案1】:

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

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

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

或者也许使用来自 NuGet 的 PDFsharp 1.50 beta,您可以在其中使用 FontResolver 处理私有字体。
在此处查看示例解析器:
http://forum.pdfsharp.net/viewtopic.php?p=8961#p8961

【讨论】:

  • 我从链接下载了源代码,使用 NuGet 包管理器在我的项目中添加了 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 Build。
  • 可能你必须写“./#Helvetica Neue”和“Helvetica Neue”而不是“./#Helvetica Neue Condensed Bold”和“Helvetica Neue Condensed Bold”。并且问题中给出的“#Helvetica Neue Condensed Bold”将无法正常工作,因为 Windows 需要“./#”。
  • 这似乎无法解决问题。正如随处所述,我需要使用在 Windows 字体查看器中使用的名称。所以这将是“Helvetica Neue Condensed Bold”(并使用 ./# 作为姓氏)。 我解决了这个问题 我在构建字体时忘记了 XpdfFontOptions 作为参数。感谢您的帮助!
【解决方案2】:

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

我使用的是 WPF 构建而不是 GDI 构建。除此之外,Uri 错误,姓氏输入错误。

【讨论】:

  • 我知道这篇文章很老了,但是你能提供相关的源代码吗?我有一个类似的问题,我不确定我错过了什么。我正在开发一个桌面应用程序,但我不知道为什么会产生重大影响。
猜你喜欢
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多