我发现只需要在我的HTML代码中添加一个带有charset属性的元标签:
import pdfkit
html_content = """
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>€</p>
<p>áéíóúñö</p>
<body>
</html>
"""
pdfkit.from_string(html_content, 'out.pdf')
实际上我花了相当长的时间去追随像这里提出的错误解决方案。如果有人感兴趣,我在我的博客上写了一个短故事。抱歉打扰了 :)
在选项中设置字符集也是可能的。这样,您就不必更改HTML文件——特别是如果您不是创建它的人,并且不想搞砸它。
def get_options():
return {
'encoding': 'UTF-8',
'enable-local-file-access': True
}
pdfkit.from_string(html, verbose=True, options=get_options(), configuration=_pdfkit_config)
在pdfkit项目中有一个相关问题https://github.com/devongovett/pdfkit/issues/470, 内容如下:
"You need to use an embedded font. The built-in fonts have a limited character set available."
这个问题的答案 如何在nodejs的pdfkit中输出欧元符号 给出了如何实现的线索。
pdfkit.from_file()
使其运作? - GitHunter0