Python 用于在Heroku上生成Django报告的Weasyprint或Reportlab
正在尝试确定在当前部署在Heroku上的我的应用程序中生成服务器端pdf报告的最佳路径。我读过几篇文章,说两者都需要安装外部库,但没有找到任何描述Heroku上的功能和易于安装的内容 这里有人有在Heroku上安装应用程序的经验吗?这是一个困难的过程-在Heroku上设置一个比另一个容易吗?或者,如果我能够在本地系统上安装并运行PIP Freeze,那么在Heroku上进行任何必要的安装都可以吗Python 用于在Heroku上生成Django报告的Weasyprint或Reportlab,python,django,heroku,reportlab,weasyprint,Python,Django,Heroku,Reportlab,Weasyprint,正在尝试确定在当前部署在Heroku上的我的应用程序中生成服务器端pdf报告的最佳路径。我读过几篇文章,说两者都需要安装外部库,但没有找到任何描述Heroku上的功能和易于安装的内容 这里有人有在Heroku上安装应用程序的经验吗?这是一个困难的过程-在Heroku上设置一个比另一个容易吗?或者,如果我能够在本地系统上安装并运行PIP Freeze,那么在Heroku上进行任何必要的安装都可以吗 谢谢 我拥有Reportlab最丰富的经验。要启动并运行它,您需要付出相当多的努力,它不能“开箱即用
谢谢 我拥有Reportlab最丰富的经验。要启动并运行它,您需要付出相当多的努力,它不能“开箱即用”,需要大量编程(您需要创建模板、围绕文本构建逻辑、围绕批处理作业构建例程等)。它作为一个普通的PIP包安装,但是您需要开始编程以使其工作
然而,看起来Weasyprint使用了另一种技术来生成pdf(CSS for print),如果您已经有了CSS格式的页面,这可能是一种更容易访问的解决方案。Weasyprint需要安装一些依赖项,您认为不可能在heroku上安装它。我在本地对它进行了测试,它运行得非常好,安装完成后,很容易输入一个漂亮的动态html文档,并得到一个可靠的pdf作为回报 heroku提供了一个web2pdf插件:
我还没有测试它,但它看起来很有希望 WeasyPrint比ReportLab更易于使用,WeasyPrint的唯一问题是它不能正确处理分页符(因为您正在将HTML页面转换为PDF),如果您的报告扩展到超过1页(例如表格),这可能会破坏交易我刚刚在我的Django程序中添加了WeasyPrint。我在本地和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及其依赖项。感谢您的洞察力!我想我将从Weasyprint开始,并可能在未来发展到ReportLab。非常感谢。