使用wkhtmltopdf时,PDF格式错误显示

时间:2017-03-06 11:50:55

标签: fonts azure-web-sites wkhtmltopdf

我正在使用wkhtmltopdf打印在react html页面内生成的报告。对于所有文本,css在我的html中将字体设置为'Open Sans', sans-serif我在标题中有以下内容来加载Open Sans字体:

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

当我在我的开发机器上运行wkhtmltopdf时,这一切似乎都运行正常,我的输出看起来像这样:

enter image description here

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

enter image description here

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

所以问题是双重的:

  1. 为什么Azure上没有使用Open Sans字体?
  2. 为什么文字会像素化?如果我将'Open Sans', sans-serif更改为sans-serif,它在浏览器中看起来仍然可以使用默认的sans-serif字体。
  3. 感谢所有帮助!

    修改

    一些其他信息。本地PDF为23Kb,服务器PDF为207Kb。在服务器PDF上只有粗体文本是可选择的,而不是其余的,所以看起来非粗体文本被视为图像,而不是实际文本。

    此外,对于本地PDF,在字体OpenSansRegular (Embedded Subset), Type: TrueType (CID), Encoding:Identity-H下表示合理。但是,在服务器/ Azure PDF下,它在字体ArialBold (Embedded Subset), Type: TrueType (CID), Encoding:Identity-H下显示。

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

1 个答案:

答案 0 :(得分:0)

根据document,我们可以知道Azure WebApp目前不支持 wkhtmltopdf 。 Azure团队正在研究它。以下是该文档的片段。

  

从HTML生成PDF

     

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

     

有些框架没有广泛利用User32 / GDI32(例如 wkhtmltopdf )和我们正在使用与启用SQL报告相同的方式在Basic中启用这些框架。