在 Python pdfkit 中指定字体
specify font in Python pdfkit
我在 Debian Docker 图像上使用 python 3.6 和 pdfkit 0.6.1(似乎是 wkhtmltopdf 0.12.3.2)。我尝试查看 docs & wkhtmltopdf options 但无法为整个文档指定字体。只有页脚和页眉的字体选项。
我试过指定
font-family: "Times New Roman", Times, serif;
在 html 到 pdf 转换之前 html <style>
部分的 div
包装器中,但它不会出现 "Times New Roman"。查看二进制文件,它似乎正在使用 DejaVuSerif
.
有没有办法为正在转换的文档指定字体?
嗯,看来我需要安装 ttf-mscorefonts-installer
,但首先,我需要将 contrib
添加到我的 sources.list
sed -Ei 's/main$/main contrib/' /etc/apt/sources.list
然后安装包
apt-get -y install ttf-mscorefonts-installer
我能找到的最接近的免费字体是 ttf-liberation
中的 Liberation Serif
,这意味着必须将 html 样式字体更改为:
font-family: "Times New Roman", Times, "Liberation Serif", serif;
我已经使用 user-style-sheet
通过 CSS 样式表自定义了整个文档的字体。在您的 CSS 文件中,为了避免字体结构出现问题,我建议您将字体转换为 base64 格式。 base64 reference
@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;
}
您可以使用 this 之类的工具将您的字体转换为 base64
。
希望对您有所帮助!
我在 Debian Docker 图像上使用 python 3.6 和 pdfkit 0.6.1(似乎是 wkhtmltopdf 0.12.3.2)。我尝试查看 docs & wkhtmltopdf options 但无法为整个文档指定字体。只有页脚和页眉的字体选项。
我试过指定
font-family: "Times New Roman", Times, serif;
在 html 到 pdf 转换之前 html <style>
部分的 div
包装器中,但它不会出现 "Times New Roman"。查看二进制文件,它似乎正在使用 DejaVuSerif
.
有没有办法为正在转换的文档指定字体?
嗯,看来我需要安装 ttf-mscorefonts-installer
,但首先,我需要将 contrib
添加到我的 sources.list
sed -Ei 's/main$/main contrib/' /etc/apt/sources.list
然后安装包
apt-get -y install ttf-mscorefonts-installer
我能找到的最接近的免费字体是 ttf-liberation
中的 Liberation Serif
,这意味着必须将 html 样式字体更改为:
font-family: "Times New Roman", Times, "Liberation Serif", serif;
我已经使用 user-style-sheet
通过 CSS 样式表自定义了整个文档的字体。在您的 CSS 文件中,为了避免字体结构出现问题,我建议您将字体转换为 base64 格式。 base64 reference
@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;
}
您可以使用 this 之类的工具将您的字体转换为 base64
。
希望对您有所帮助!