我正在使用wkhtmltopdf打印在react html页面内生成的报告。对于所有文本,css在我的html中将字体设置为'Open Sans', sans-serif
我在标题中有以下内容来加载Open Sans字体:
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
当我在我的开发机器上运行wkhtmltopdf时,这一切似乎都运行正常,我的输出看起来像这样:
但是,在我的服务器上(在作为Azure Web App运行的Azure上),我得到以下输出:
正如您所看到的,除了由于某种原因粗体的标题外,所有文本看起来都非常像素化。如果您同时看到粗体和普通文本,您还可以看到未使用Open Sans字体(最容易在g&#39;上看到)。
所以问题是双重的:
'Open Sans', sans-serif
更改为sans-serif
,它在浏览器中看起来仍然可以使用默认的sans-serif字体。感谢所有帮助!
修改
一些其他信息。本地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
下显示。
因此出于某种原因嵌入了错误的字体,非粗体文本被视为图像。
答案 0 :(得分:0)
根据document,我们可以知道Azure WebApp目前不支持 wkhtmltopdf 。 Azure团队正在研究它。以下是该文档的片段。
从HTML生成PDF
有多个库用于将HTML转换为PDF。许多Windows / .NET特定版本利用IE API,因此广泛利用User32 / GDI32。这些API在沙箱中被大量阻止(无论计划如何),因此这些框架在沙箱中不起作用。
有些框架没有广泛利用User32 / GDI32(例如 wkhtmltopdf )和我们正在使用与启用SQL报告相同的方式在Basic中启用这些框架。强>