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进程的内存中,您可能希望将字节从命令流传输到传出套接字.

上一篇:wkhtmltopdf使用指南,html转图片,转pdf


下一篇:PHP-wkhtmltopdf:如何使用?