使用 pdfkit 在 python 中使用 material 图标将 html 转换为 pdf
Convert html to pdf with material icons in python using pdfkit
我需要将页面呈现为包含 Material 图标的 PDF 文件,但它似乎不起作用。
templates/pdf.html
<html>
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<style>
* {
font-family: Roboto, Helvetica, sans-serif;
}
</style>
</head>
<body>
Just test
<i class="material-icons">remove_red_eye</i>
</body>
</html>
gen.py
import pdfkit
from django.template.loader import render_to_string
html = render_to_string('pdf.html')
pdfkit.from_string(html, 'out.pdf')
# I tried this version but it doesn't work either
# pdfkit.from_string(html, 'out.pdf', css=['https://fonts.googleapis.com/icon?family=Material+Icons'])
out.pdf
仅包含文本 Just test
。有机会修复吗?
我刚刚还在 pdfkit 存储库中创建了问题 - issue
有 2 个问题需要解决,我以可接受的方式解决了。
Css.
只有 inline styles
有效。外部样式不起作用。
Wkhtmltopdf支持-webkit-
前缀,所以部分css属性需要添加前缀才能正常使用。
如果需要,下载外部 css 文件。在 django 模板中使用 <style>{% include 'style.css' %}</style>
来分隔 css 个文件。
图标字体和自定义字体不起作用。
- 下载所需的 svg 图标,而不是使用图标字体。
a. use {% include 'icon.svg' %}
to include the font icons
b. only path
, fill
element in svg xml are supported
c. you can change the color and height of svg in the svg xml content.
d. download svgs at Material Icon
e. you can use pngs instead but it is not easy to change the icon color and size.
- 使用系统字体或在服务实例中手动安装字体。
我需要将页面呈现为包含 Material 图标的 PDF 文件,但它似乎不起作用。
templates/pdf.html
<html>
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<style>
* {
font-family: Roboto, Helvetica, sans-serif;
}
</style>
</head>
<body>
Just test
<i class="material-icons">remove_red_eye</i>
</body>
</html>
gen.py
import pdfkit
from django.template.loader import render_to_string
html = render_to_string('pdf.html')
pdfkit.from_string(html, 'out.pdf')
# I tried this version but it doesn't work either
# pdfkit.from_string(html, 'out.pdf', css=['https://fonts.googleapis.com/icon?family=Material+Icons'])
out.pdf
仅包含文本 Just test
。有机会修复吗?
我刚刚还在 pdfkit 存储库中创建了问题 - issue
有 2 个问题需要解决,我以可接受的方式解决了。
Css.
只有
inline styles
有效。外部样式不起作用。Wkhtmltopdf支持
-webkit-
前缀,所以部分css属性需要添加前缀才能正常使用。
如果需要,下载外部 css 文件。在 django 模板中使用
<style>{% include 'style.css' %}</style>
来分隔 css 个文件。
图标字体和自定义字体不起作用。
- 下载所需的 svg 图标,而不是使用图标字体。
a. use
{% include 'icon.svg' %}
to include the font iconsb. only
path
,fill
element in svg xml are supportedc. you can change the color and height of svg in the svg xml content.
d. download svgs at Material Icon
e. you can use pngs instead but it is not easy to change the icon color and size.
- 使用系统字体或在服务实例中手动安装字体。