在Heroku上生成Django报表,使用Weasyprint或Reportlab?

4

正在考虑在我的应用程序中生成服务器端pdf报告的最佳路线,该应用程序当前已部署在Heroku上。我已经阅读了几篇文章,都说需要安装外部库,但没有找到任何描述在Heroku上安装外部库功能和易用性的内容。

这里有没有任何人有在Heroku上安装过这些库的经验?这是一个困难的过程吗?其中一个比另一个更容易在Heroku上设置吗?或者如果我能够在本地系统上安装并运行PIP Freeze,那么是否可以处理在Heroku上必要的任何安装?

谢谢!

4个回答

3

Weasyprint需要安装一些依赖项,我认为在Heroku上安装它是不可能的。我在本地测试了它,效果非常好,在设置完成后很容易就可以使用一个漂亮的动态HTML文档,并获得一个稳定的PDF文件。

Heroku提供了一个名为web2pdf-addon的插件: https://elements.heroku.com/addons/webtopdf#details

我还没有测试过它,但看起来很有前途。


3

我刚刚在我的Django程序中添加了WeasyPrint。我在本地和Heroku上都进行了测试,它在两个地方都很好用。

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

$ pip3 freeze 

然后寻找WeasyPrint信息。对我来说,它是以下行:

WeasyPrint==51

请将以下行添加到requirements.txt文件中,然后运行:
$ git add -A
$ git commit -m "Changed requirements"
$ git push heroku master

Heroku添加了WeasyPrint及其依赖项。


1
你是如何在Heroku上安装cairo、Pango和GDK-PixBuf的? - alias51

2

WeasyPrint比ReportLab更容易使用,唯一的问题是它无法正确处理页面断点(因为您正在将HTML页面转换为PDF),如果您的报告跨越多个页面(例如表格),这可能成为一个致命问题。


1
我有Reportlab的丰富经验。要让它正常工作需要你付出很多努力,它不是"开箱即用"的,需要大量编程(你需要创建模板、构建文本逻辑、构建批处理程序等)。它安装为普通的PIP包,但然后你需要开始编程才能让它工作。
然而,看起来Weasyprint使用另一种技术来生成PDF(CSS打印),如果你已经使用CSS格式化了页面,这可能是一个更容易访问的解决方案。

谢谢你的见解!我想我会先从Weasyprint开始,然后可能在未来转向ReportLab。谢谢! - mg2019

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接