Weasyprint 或 Reportlab 用于在 Heroku 上生成 Django 报告

Weasyprint or Reportlab for generating Django reports on Heroku

尝试确定在我当前部署在 Heroku 上的应用程序中生成服务器端 pdf 报告的最佳途径。我读过几篇文章,说两者都需要安装外部库 - 但没有找到任何描述功能和在 Heroku 上易于安装的内容。

这里有人有在 Heroku 上安装应用程序的经验吗?这是一个困难的过程——在 Heroku 上设置一个比另一个更容易吗?或者,如果我能够在我的本地系统上安装 运行 PIP Freeze,它会处理 Heroku 上任何必要的安装吗?

谢谢!!

我对 Reportlab 的经验最丰富。要启动它 运行 需要您付出很多努力,它不起作用 "out of the box" 并且涉及大量编程(您需要创建模板,围绕文本构建逻辑,围绕批处理作业构建例程ETC。)。它作为一个普通的 PIP 包安装,但是你需要开始编程才能让它工作。

但是,Weasyprint 似乎使用了另一种技术来生成 pdf(CSS 用于打印),如果您已经将页面格式化为 CSS。[=10,这可能是一种更容易访问的解决方案=]

Weasyprint 需要安装一些依赖项,认为在heroku 上安装它是不可能的。我在本地对其进行了测试,它运行良好,设置完成后,很容易提供一个不错的动态 html-document 并在 return.

中获得可靠的 pdf

heroku 提供了一个 web2pdf 插件: https://elements.heroku.com/addons/webtopdf#details

我还没有测试,但看起来很有希望。

WeasyPrint 比 ReportLab 更容易使用,weasyprint 的唯一问题是它不能正确处理分页符(因为您要将 HTML 页面转换为 PDF),这可能会破坏交易如果您的报告超过 1 页(例如表格)

我刚刚将 WeasyPrint 添加到我的 Django 程序中。我在本地和 Heroku 上都对其进行了测试。它在两个地方都运行得很好。

如果您使用的是 Django,您可以先 运行 pip3 freeze 以获取正确的 WeasyPrint 信息(版本)以在您的需求文件中使用:

$ pip3 freeze 

然后寻找WeasyPrint的信息。对我来说,是下面一行:

WeasyPrint==51

将此行添加到 requirements.txt 文件中。然后 运行:

$ git add -A
$ git commit -m "Changed requirements"
$ git push heroku master

Heroku 添加了 WeasyPrint 及其依赖项。