You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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:
    "C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe" --enable-local-file-access result.html test.pdf
    
    若命令行生成正常,问题出在pdfkit调用逻辑;若仍显示0,则是HTML内容或wkhtmltopdf配置问题。
  • 指定文件编码:写入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:27:57