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

点击导出PDF按钮触发wkhtmltopdf错误:ContentNotFoundError求助

排查wkhtmltopdf导出PDF时的ContentNotFoundError错误

错误信息

wkhtmltopdf reported an error: Exit with code 1 due to network error: ContentNotFoundError

可能的原因及解决方法

1. 目标URL路径错误

你在pdfkit.from_url中使用的URL是'http://127.0.0.1:8000/'+str(c.id),需先确认该URL对应的页面是否存在且可正常访问:

  • 手动在浏览器中访问http://127.0.0.1:8000/[你的pk值],检查能否加载目标页面。若无法访问,说明路径错误,需修正为正确的详情页URL。
  • 推荐用Django的URL反向解析生成路径,避免手动拼接出错:
    from django.urls import reverse
    
    # 假设候选人详情页的URL名称为'candidate_detail'
    detail_url = reverse('candidate_detail', args=[c.id])
    full_url = request.build_absolute_uri(detail_url)
    pdf = pdfkit.from_url(full_url, False, options=options)
    

2. 服务器端口或地址不匹配

确认你的Django服务器实际运行的端口和地址:

  • 若服务器未运行在127.0.0.1:8000(比如用python manage.py runserver 0.0.0.0:8001启动),需修改from_url中的地址为实际的服务器地址和端口。

3. Cookie传递有效性问题

虽然你传递了csrftoken和sessionid,但需验证:

  • 目标页面是否需要登录权限?若是,传递的sessionid是否与当前用户的有效session一致?可打印cookies['sessionid']确认正确性。
  • 检查CSRF令牌是否有效,部分视图需正确传递CSRF令牌才能访问,可临时在目标视图添加@csrf_exempt(仅用于测试),确认是否因CSRF验证导致访问失败。

4. 服务器网络访问限制

  • 若在生产环境使用Nginx、Apache等反向代理,127.0.0.1:8000可能无法被wkhtmltopdf访问。此时需使用服务器的外部可访问地址,或配置反向代理允许本地访问。
  • 在服务器上执行curl http://127.0.0.1:8000/[pk],检查能否获取页面内容,确认wkhtmltopdf所在环境可访问目标URL。

5. 页面资源加载问题

若目标页面包含外部资源(如图片、CSS)加载失败,也可能触发类似错误。检查页面控制台是否有资源加载失败提示,确保所有资源均可正常访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:01:13