Fonts 使用wkhtmltopdf时PDF中显示的字体错误

Fonts 使用wkhtmltopdf时PDF中显示的字体错误,fonts,azure-web-app-service,wkhtmltopdf,Fonts,Azure Web App Service,Wkhtmltopdf,我正在使用wkhtmltopdf打印在react html页面中生成的报告。对于所有文本,css的字体设置为“开放式Sans”,Sans serif在我的html中,我的标题中有以下内容以加载开放式Sans字体: <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> 当我在开发机器上运行wkhtmltopdf时,这一切似乎都很好,我得到的输出如下所示: 但是,在我的服务

我正在使用wkhtmltopdf打印在react html页面中生成的报告。对于所有文本,css的字体设置为
“开放式Sans”,Sans serif
在我的html中,我的标题中有以下内容以加载开放式Sans字体:

<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">

当我在开发机器上运行wkhtmltopdf时,这一切似乎都很好,我得到的输出如下所示:

但是,在我的服务器(在Azure上作为Azure Web应用程序运行)上,我得到以下输出:

正如您所看到的,所有文本看起来都非常像素化,除了出于某种原因粗体的标题。如果同时看到粗体和普通文本,还可以看到未使用Open SAN字体(最容易在g上看到)

因此,问题有两个方面:

  • 为什么Azure上没有使用开放式SAN字体
  • 为什么文本是像素化的?如果我将
    “打开Sans”,Sans serif
    更改为仅
    Sans serif
    ,浏览器中的默认Sans serif字体仍然正常
  • 感谢大家在这方面的帮助

    编辑

    一些补充资料。本地PDF为23Kb,服务器PDF为207Kb。在服务器PDF上,只有粗体文本是可选择的,其他文本则不可选择,因此非粗体文本似乎被视为图像,而不是实际文本

    此外,对于本地PDF,在Fonts
    OpenSansRegular(嵌入式子集)下输入:TrueType(CID),编码:Identity-H
    ,这似乎是合理的。然而,在server/Azure PDF下,它在font
    ArialBold(嵌入式子集)下显示,类型:TrueType(CID),编码:Identity-H

    因此,由于某些原因,嵌入了错误的字体,而非粗体文本被视为图像。

    根据我们可以知道,Azure WebApp当前不支持wkhtmltopdf。和Azure团队正在对此进行研究。以下是文档中的片段

    从HTML生成PDF

    有多个库用于将HTML转换为PDF。许多Windows/.NET特定版本利用IE API,因此广泛利用User32/GDI32。这些API在很大程度上被阻塞在沙箱中(无论计划如何),因此这些框架在沙箱中无法工作

    有一些框架没有广泛利用User32/GDI32(wkhtmltopdf),我们正在以基本+与启用SQL报告相同的方式启用这些框架。


    似乎在Azure WebApp中未安装字体或沙箱限制,并将默认值加载到Aria。我还找到了一个新的方法。我们也可以向Azure团队提供我们的支持。您有关于此线程的任何更新吗?