我使用pdfkit和wkhtmltopdf生成pdf文档。当我生成第一个pdf时,一切都很顺利。当我快速(在5秒内)生成另一个我得到错误[Errno 9]坏文件描述符。如果我关闭错误(退回浏览器)并再次打开,它将创建pdf。
my views.py
config = pdfkit.configuration(wkhtmltopdf='C:/wkhtmltopdf/bin/wkhtmltopdf.exe')
pdfgen = pdfkit.from_url(url, printname, configuration=config)
pdf = open(printname, 'rb')
response = HttpResponse(pdf.read())
response['Content-Type'] = 'application/pdf'
response['Content-disposition'] = 'attachment ; filename =' + filename
pdf.close()
return response
也许重要提示:我在IIS8上运行此站点,从命令行(python manage.py runserver)运行时,错误不存在。
有关如何处理此错误的任何指导都很棒。
答案 0 :(得分:6)
答案 1 :(得分:3)
由于没有进一步的信息,我会将我的评论转换为答案......
最有可能的问题是,当您尝试快速重新加载(通过from_url)时,Web服务器会拒绝您的URL,或者您在访问要创建的本地文件时遇到问题。
您可以尝试通过将False作为输出文件名直接写入变量来消除后者 - 例如pdf = pdfkit.from_url('google.com', False)
。
如果这不能解决问题,那么您的问题几乎肯定是服务器拒绝了URL - 因此您需要查看该服务器上的诊断信息。