在Python的pdfkit中指定字体

3
我正在使用Python 3.6和pdfkit 0.6.1(似乎还有wkhtmltopdf 0.12.3.2)在Debian Docker镜像上。我尝试查看文档wkhtmltopdf选项,但没有办法为整个文档指定字体。只有页眉和页脚的字体选项。
我尝试指定了一些选项,如:
font-family: "Times New Roman", Times, serif;

在将HTML转换为PDF之前,在我的HTML的<style>部分中使用
包装器,但它没有显示"Times New Roman"字体。查看二进制文件,似乎它正在使用DejaVuSerif字体。
有没有一种指定要转换文档的字体的方法?
2个回答

5

我已经成功使用 user-style-sheet 传递CSS样式表来定制整个文档的字体。在你的CSS文件中,为避免与字体结构出现问题,建议你将字体转换为base64格式。参考base64

@font-face {
    font-family: 'YourFont';
    font-style: normal;
    font-weight: 400;
    src: url(data:font/opentype;charset=utf-8;base64,d09GRgABAAAAAD00AA4A---[large string ommited]----3MAuAH/hbAEjQA=) format("woff"),
    url(data:font/truetype;charset=utf-8;base64,AAEAAAARAQAABAAQRFNJRwAAAAEAAJUIAAA---[large string ommited]-----wAAAAAAAAAAAAEAAAAA) format("truetype");
}

* {
  font-family: "YourFont" !important;
}

您可以使用像这样的工具将您的字体转换为 base64 格式。

希望对您有所帮助!


1
谢谢!这很有帮助。我找不到其他解决办法了。 - Ankit Jain
1
谢谢!这很有帮助。我找不到其他解决办法来应对这个问题。 - undefined

0

看起来我需要安装ttf-mscorefonts-installer,但首先,我需要将contrib添加到我的sources.list中。

sed -Ei 's/main$/main contrib/' /etc/apt/sources.list

然后安装该软件包

apt-get -y install ttf-mscorefonts-installer

我能找到的最接近的免费字体是Liberation Serif,它在ttf-liberation中。这意味着HTML样式字体必须更改为:

font-family: "Times New Roman", Times, "Liberation Serif", serif;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接