【问题标题】:PDFsharp on Azure with Custom FontsAzure 上的 PDFsharp 与自定义字体
【发布时间】:2016-07-10 16:27:36
【问题描述】:

我正在使用 azure 上的 webapp 使用 PDFsharp 1.32 创建 PDF。由于它是 Azure webapp,我无法安装字体。

因此,我使用以下嵌入字体选项:

var globalFontCollection = XPrivateFontCollection.Global;
_fontBytes = File.ReadAllBytes(_pathToFont);   
globalFontCollection.AddFont(_fontBytes, _fontName);

但是这不起作用。没有错误,就好像字体未知并回退到默认值一样。如果我安装字体,它就可以工作,所以我知道其余代码是正确的。

其他代码显示使用具有不同参数的 AddFont,但是这些对我不可用,查看源代码这是唯一实现的方法。

有谁知道允许我们使用未安装字体的正确代码?

【问题讨论】:

    标签: pdf fonts pdf-generation azure-web-app-service pdfsharp


    【解决方案1】:

    对 PDFsharp 1.50 的字体处理进行了彻底检查 - 还考虑了 Azure 和 Medium Trust。我建议对 Azure 使用 PDFsharp 1.50(最新版本是 beta 3)或更高版本。我认为 WPF 构建将是合适的。
    新的IFontResolver 让您可以更好地控制字体处理。
    PDFsharp 1.50 的示例包包括一个示例。或者,您可以使用来自第三方的EZFontResolver

    关于 PDFsharp 1.32:有不同的版本为 AddFont 公开了不同的重载。我还建议为 Azure 构建 WPF。
    字体处理是特定于平台的(GDI+ 或 WPF)。让平台使用自定义字体可能很难让字体名称“正确”。
    PDFsharp 1.32 包括一个使用资源字体的工作 WPF 示例。您可以使用此示例开始。

    据我所知,GDI+ 不是 Azure 网站的选项。所以WPF是要走的路。我会使用带有新的IFontResolver 接口的1.50 版。通过 EZFontResolver 实现,它很容易使用。 PDFsharp 1.50 的示例显示了 IFontResolver 的实现,如果您想在没有 EZFontResolver 的情况下执行此操作,可以将其用作模板。

    【讨论】:

    • 从那以后我了解到 Azure Web 应用程序不支持 GDI+,如果我使用 WPF 选项,这是否适用于 Azure Web 应用程序,还是在后台使用 GDI+?
    • WPF 构建不使用 GDI+。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2015-10-26
    • 2011-08-07
    • 2022-11-23
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多