2

我在 Debian Docker 映像上使用 python 3.6 和 pdfkit 0.6.1(似乎是 wkhtmltopdf 0.12.3.2)。我尝试查看docs & wkhtmltopdf 选项,但无法为整个文档指定字体。页脚和页眉只有字体选项。

我尝试指定

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

在将html 转换为 pdf 之前div,在我的 html 部分的包装器中<style>,但它没有出现“Times New Roman”。查看二进制文件,它似乎正在使用DejaVuSerif.

有没有办法为要转换的文档指定字体?

4

2 回答 2

2

我已经设法自定义整个文档的字体,使用user-style-sheet. 在您的 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.

希望能帮助到你!

于 2019-03-19T20:54:40.380 回答
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 Serifin ttf-liberation,这意味着必须将 html 样式字体更改为:

font-family: "Times New Roman", Times, "Liberation Serif", serif;
于 2018-07-12T23:49:57.423 回答