使用 wkhtmltopdf 打印包含 Font Awesome 图标的 HTML

问题描述 投票:0回答:4

我想打印一个 HTML 页面,其中包含 Font Awesome 图标,并带有

wkhtmltopdf
。我在 Google 字体中看到了这个问题:Google Web Fonts and PDF Generation from HTML with wkhtmltopdf,但这种方式不起作用。

html wkhtmltopdf font-awesome
4个回答
6
投票

我通过内联文件的 TTF 版本解决了这个问题,如下所示:

<style type="text/css">
@font-face {
    font-family: 'FontAwesome';
    src: url(data:application/x-font-truetype;base64,<< insert base64 encoded fontawesome-webfont.ttf here >>) format('truetype');
    font-weight: normal;
    font-style: normal;
}
</style>

然后内联

font-awesome.css
文件。但是您需要删除该文件的
@font-face
at 规则,因为 wkhtmltopdf 不喜欢定义相同字体的多个
@font-face
。您可以通过内联文件的修改版本或使用正则表达式删除 at 规则来实现此目的(例如:
@font-face\s*\{[^\}]*\}
)。

(我尝试保留原始的

@font-face
不变,希望以后的定义能够覆盖它,但这不起作用。CSS 标准似乎没有定义当出现相同字体的两个
@font-face
时会发生什么,如果我没看错)


2
投票

你有什么例子吗?

我在这个问题上看到了类似的内容: https://github.com/mileszs/wicked_pdf/issues/587

文件名包含回车符,该字符不是有效的显示符号。您看到的字形通常是针对私有 Unicode 字符区域的研究。


0
投票

将 .woff 文件添加到 Font Awesome lib 目录中(css 中没有 base64),它应该可以工作。


0
投票

我最近在 M4 Mac mini 上运行 wkhtmltopdf 时遇到了这个问题。似乎更快的速度导致了一种竞争条件,字体有时只能正确渲染。为了让它工作,我必须编辑 fontawesome css,只留下 src: 作为字体的 SVG 版本(删除了 WOFF、WOFF2、TTF 等)。

这样做之后,字体每次都会正确渲染。

© www.soinside.com 2019 - 2024. All rights reserved.