在Django中批量渲染PDF文档

时间:2016-11-14 00:45:25

标签: python django pdf

我需要通过Django生成整个堆(~200)的PDF文档,我正在寻找建议(或库)来做到这一点。每个单独的文档都需要有一个视图,但是需要定期从特定的过滤器下载此视图生成的所有pdf。我可以看到这些可能的方法:

  • 生成单个文档 - 这很简单,但我更喜欢单个文档
  • 使用'下载'生成一个文档。 content-disposition,然后重定向到下一个(不确定这是否适用于200个文档?)
  • 在后台任务中生成/缓存服务器上的所有文档,然后提供zip文件链接,或保存到外部存储设备,如Google云端硬盘。

对于第三个选项,哪些PDF库非常适合在后台任务中提供程序化渲染,还可以轻松地按需查看单个文档?

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

我在django应用程序中使用了reportlab(尽管多年前),并且将模板化的HTML渲染为PDF以便下载。

单个文档

如果这花费的时间不到几秒钟,那么作为请求/响应周期的一部分可能就好了。

批量压缩文档

为避免在长时间运行的任务中绑定Web工作人员,您通常会将这种较为重要的工作推送到异步任务队列中,然后在用户下载准备好并等待存储后为其提供链接。这就是说,这取决于你的用例。如果您确定只有少数并发用户,则可以证明可以避免排除队列的额外复杂性。如果你不确定,可能有必要咬紧牙关并建立一个队列。

好消息是,如果你走队列路线,你很可能会很快找到其他用例。 :)对于django,celeryredis是一个坚实的组合。