Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于在Heroku上生成Django报告的Weasyprint或Reportlab_Python_Django_Heroku_Reportlab_Weasyprint - Fatal编程技术网

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

Python 用于在Heroku上生成Django报告的Weasyprint或Reportlab,python,django,heroku,reportlab,weasyprint,Python,Django,Heroku,Reportlab,Weasyprint,正在尝试确定在当前部署在Heroku上的我的应用程序中生成服务器端pdf报告的最佳路径。我读过几篇文章,说两者都需要安装外部库,但没有找到任何描述Heroku上的功能和易于安装的内容 这里有人有在Heroku上安装应用程序的经验吗?这是一个困难的过程-在Heroku上设置一个比另一个容易吗?或者,如果我能够在本地系统上安装并运行PIP Freeze,那么在Heroku上进行任何必要的安装都可以吗 谢谢 我拥有Reportlab最丰富的经验。要启动并运行它,您需要付出相当多的努力,它不能“开箱即用

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

这里有人有在Heroku上安装应用程序的经验吗?这是一个困难的过程-在Heroku上设置一个比另一个容易吗?或者,如果我能够在本地系统上安装并运行PIP Freeze,那么在Heroku上进行任何必要的安装都可以吗


谢谢

我拥有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。非常感谢。