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

如何在Django中使用pdfkit生成PDF?wkhtmltopdf找不到错误如何解决

排查与解决步骤

1. 确认是否安装wkhtmltopdf

pdfkit是基于wkhtmltopdf封装的Python工具,本身不包含HTML转PDF的核心能力,需要单独安装wkhtmltopdf独立程序:

  • Windows:下载对应系统架构的安装包安装,记录下安装目录中bin文件夹下wkhtmltopdf.exe的完整路径,例如C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
  • macOS:通过Homebrew执行命令brew install wkhtmltopdf完成安装
  • Debian/Ubuntu系列Linux:执行命令sudo apt install wkhtmltopdf完成安装
  • CentOS/RHEL系列Linux:执行命令sudo yum install wkhtmltopdf完成安装

2. 验证安装与系统路径配置

安装完成后在终端执行wkhtmltopdf --version,如果正常输出版本号说明安装成功且系统已识别程序路径。如果仍提示找不到命令,需将wkhtmltopdf所在的bin目录手动添加到系统环境变量PATH中,重启终端/项目进程后重试。

3. 检查可执行文件权限

如果确认已安装仍报错,需要确认运行Django项目的进程对wkhtmltopdf可执行文件具备读取、执行权限:

  • Linux/macOS下可执行chmod +x <你的wkhtmltopdf完整路径>赋予执行权限
  • Windows下检查运行Django的用户账户对wkhtmltopdf所在目录有读取权限

4. 代码中手动指定程序路径

如果不想修改系统环境变量,也可以直接在业务代码中显式传入wkhtmltopdf的路径,修改对应代码即可:

def customer_render_pdf_view(request, *args, **kwargs):
     pk = kwargs.get('pk')
     customer = get_object_or_404(Person, pk=pk)
     enrolment = get_object_or_404(Enrollment,pk=pk)  
     template_path = 'test.html'
     context = {'customer': customer, 'enrolment':enrolment}    
     template = get_template(template_path)
     html = template.render(context)    
     # 新增配置:指定wkhtmltopdf路径,替换为你自己的实际路径
     config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
     # 调用时传入configuration参数
     pdf = pdfkit.from_string(html, False, configuration=config)
     response = HttpResponse(pdf, content_type='application/pdf' )
     # 优化响应头写法,兼容更多浏览器的文件名识别
     response['Content-Disposition'] = 'attachment; filename="report.pdf"'
     return response

Linux/macOS下的路径示例为/usr/local/bin/wkhtmltopdf。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:03