python-使用Django从stdout返回pdf响应
作者:互联网
我使用wkhtmltopdf创建PDF文件,但是我不知道如何正确返回它们,因此我不得不将它们写入媒体文件夹,然后重定向到刚创建的文件.
编辑:
Ian的建议是写到STDOUT,所以我更改了wkhtmltopdf命令来执行此操作,但是现在我不知道如何返回该内容.
我一直在尝试使用subprocess.Popen这样:
r = HttpResponse(Popen(command_args), mimetype='application/pdf')
r['Content-Disposition'] = 'filename=recibos.pdf'
return r
但是我没有得到好的结果
提前致谢.
解决方法:
您应该像这样打开子命令:
popen = Popen(command_args, stdout=PIPE, stderr=PIPE)
body_contents = popen.stdout().read()
popen.terminate()
popen.wait()
r = HttpResponse(body_contents, mimetype='application/pdf')
注意以下几点:
>如果您的popen’d命令写入STDERR,则可能会死锁.您可以通过在Popen对象上使用communication()函数来解决此问题.
>您应该尝试/最后这样做,以确保始终终止()和等待().
>这会将整个PDF加载到python进程的内存中,您可能希望将字节从命令流传输到传出套接字.
标签:pdf,wkhtmltopdf,python,django 来源: https://codeday.me/bug/20191023/1913531.html