使用Python的pdfkit与jinja2生成PDF仅显示0的问题排查
使用pdfkit生成PDF仅显示数字0的问题
我在Python中使用pdfkit从HTML文件生成PDF,但生成的PDF仅显示数字0。已安装wkhtmltopdf,相关代码如下:
from jinja2 import Environment, FileSystemLoader import pdfkit template_loader = FileSystemLoader('.') temp_env = Environment(loader=template_loader) template = temp_env.get_template("sample-template.html") output = template.render(curse = "CSE") with open('result.html', 'w') as f: f.write(output) wkpath = "C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe" config = pdfkit.configuration(wkhtmltopdf=wkpath) pdfkit.from_file('result.html', 'output' + '.pdf', options={"enable-local-file-access": ""}, configuration=config)
解决思路
- 验证HTML文件内容:打开生成的
result.html,确认是否有正常渲染的内容。若HTML本身仅含数字0或为空,需排查Jinja2模板sample-template.html的问题,比如是否正确使用了{{ curse }}变量,或模板本身存在错误输出。 - 修正变量拼写错误:代码中传入的变量为
curse = "CSE",若模板中使用的变量名是course这类正确拼写,会导致渲染后无有效内容,需统一变量名。 - 测试wkhtmltopdf命令行:直接执行命令行测试生成PDF:
若命令行生成正常,问题出在pdfkit调用逻辑;若仍显示0,则是HTML内容或wkhtmltopdf配置问题。"C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe" --enable-local-file-access result.html test.pdf - 指定文件编码:写入HTML文件时添加编码参数,避免编码异常导致内容无法解析:
with open('result.html', 'w', encoding='utf-8') as f: f.write(output) - 调整pdfkit参数:尝试添加
--no-stop-slow-scripts、--debug-javascript等参数,排查是否因JS加载问题导致内容无法显示:pdfkit.from_file('result.html', 'output.pdf', options={"enable-local-file-access": "", "no-stop-slow-scripts": "", "debug-javascript": ""}, configuration=config)
内容的提问来源于stack exchange,提问作者Tazeem Bhat
相关产品推荐
相关产品推荐

