0

我一直在成功使用 Wea​​syprint 生成 pdf,直到达到一定大小,这是我的应用程序的一个常见用例,其中 pdf 生成需要很长时间(超过 10 秒),以至于它破坏了与浏览器的连接,并且下载是不可能的。

我想我必须流式传输文件创建并返回 django StreamingHttpResponse(同意?)。我不会对 pdf 进行预处理,因为它是由包含用户经常添加或删除的项目的篮子组成的。

但是如何使用weasyprint流式传输文件创建?即使我将我的 sourceHtml 字符串分成几部分,如何逐步编写 pdf?

我渲染一个 django 模板并从中生成 pdf:

from weasyprint import HTML

sourceHtml = template.render(my-objects)
outhtml = HTML(string=sourceHtml).write_pdf()

response = HttpResponse(outhtml, content_type='application/pdf')
response['Content-Disposition'] = u'attachment; filename="{}.pdf"'.format(name)

还是有其他方法可以解决这个问题?

谢谢 !

4

1 回答 1

0

我在问题跟踪器上询问:https ://github.com/Kozea/WeasyPrint/issues/416

这是不可行的,建议的解决方法是

将下载分为两个步骤:一个路由异步生成文档并将其存储在文件系统中,第二个路由下载生成的文档。当文档尚未生成时,您可以隐藏第二个链接并显示类似“文档尚未生成”的内容。

于 2017-01-30T15:11:46.113 回答