如何使用 python-pdfkit 中的 from_string 生成具有 non-ascii 个字符的 PDF

How to generate a PDF with non-ascii characters using from_string from python-pdfkit

我正在努力使用 Python 3.5.2、python-pdfkit 和 wkhtmltox-0.12.2 生成具有 non-ascii 个字符的简单 PDF。

这是我能写的最简单的示例:

import pdfkit
html_content = u'<p>ö</p>'
pdfkit.from_string(html_content, 'out.pdf')

这就像输出文档看起来像:

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."

这个问题的答案How to: output Euro symbol in pdfkit for nodejs给出了如何做的线索。

我发现我只需要在我的 HTML 代码中添加一个带有字符集属性的元标记:

import pdfkit

html_content = """
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <p>&euro;</p>
    <p>áéíóúñö</p>
<body>
</html>
"""

pdfkit.from_string(html_content, 'out.pdf')

实际上,我花了相当长的时间来遵循此处建议的错误解决方案。如果有人感兴趣,我写了一个短篇小说on my blog。抱歉垃圾邮件 :)

也可以在选项中设置字符集。这样您就不必更改 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)