我想打印一个 HTML 页面,其中包含 Font Awesome 图标,并带有
wkhtmltopdf
。我在 Google 字体中看到了这个问题:Google Web Fonts and PDF Generation from HTML with wkhtmltopdf,但这种方式不起作用。
我通过内联文件的 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
时会发生什么,如果我没看错)
你有什么例子吗?
我在这个问题上看到了类似的内容: https://github.com/mileszs/wicked_pdf/issues/587
文件名包含回车符,该字符不是有效的显示符号。您看到的字形通常是针对私有 Unicode 字符区域的研究。
将 .woff 文件添加到 Font Awesome lib 目录中(css 中没有 base64),它应该可以工作。
我最近在 M4 Mac mini 上运行 wkhtmltopdf 时遇到了这个问题。似乎更快的速度导致了一种竞争条件,字体有时只能正确渲染。为了让它工作,我必须编辑 fontawesome css,只留下 src: 作为字体的 SVG 版本(删除了 WOFF、WOFF2、TTF 等)。
这样做之后,字体每次都会正确渲染。