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

如何在Django中获取渲染模板并通过pdfkit转换为PDF?

解决Django模板转PDF(pdfkit)内容异常的问题

嘿,我完全懂你遇到的麻烦——你直接用pdfkit.from_file()加载Django模板文件,结果生成的PDF内容异常,大概率是因为模板里的Django语法(变量、循环、模板标签这些)根本没被渲染,pdfkit只是把原始的模板代码原封不动转成了PDF,自然不是你想要的结果。

下面给你一步步解决的方案:

第一步:先渲染Django模板为HTML字符串

Django自带的render_to_string工具可以帮你把模板和上下文数据结合,生成完整的HTML内容,这才是pdfkit该处理的东西。

from django.template.loader import render_to_string

# 准备模板需要的上下文数据——就是你模板里用到的所有变量
context = {
    'table_data': your_table_dataset,  # 替换成你实际的表格数据
    'page_title': '我的自定义表格',
    # 其他模板里用到的变量都要在这里定义
}

# 渲染模板成完整的HTML字符串
# 路径用Django模板的相对路径即可,不用写全路径
rendered_html = render_to_string('app/table.html', context)

第二步:用pdfkit渲染已生成的HTML字符串

现在用pdfkit.from_string()方法,把刚才渲染好的HTML字符串转成PDF,这时候内容就会是你预期的样子了:

import pdfkit

# 直接从渲染好的HTML字符串生成PDF
pdfkit.from_string(rendered_html, 'table.pdf')

额外的注意事项

  • 静态资源路径问题:如果你的模板里用到了CSS、图片,要确保这些资源的路径能被pdfkit依赖的wkhtmltopdf访问到。可以把静态资源换成绝对路径,或者在上下文里传入完整的静态资源URL。比如模板里的{% static 'css/table.css' %}渲染后要变成wkhtmltopdf能找到的路径。
  • wkhtmltopdf配置:如果pdfkit还是有问题,可能是wkhtmltopdf没装好或者路径没配置对,可以手动指定它的路径:
    config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')  # 换成你实际的安装路径
    pdfkit.from_string(rendered_html, 'table.pdf', configuration=config)
    

内容的提问来源于stack exchange,提问作者lhd93

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:31:48