如何在Google App Engine上使用xhtml2pdf
我一直在尝试让XHTML2PDF在GAE上运行。我已经下载了相关的包和依赖,并把它们放到了我的项目文件夹里。但是我总是遇到缺少模块的错误。我试过下载不同的版本和推荐的版本。有没有人能给我指个明路?我在想这可能和app.yaml
有关,但我真的不知道该怎么设置。
我做了以下事情:
我下载了xhtml2pdf 0.0.5,它的要求是:
Reportlab Toolkit 2.2+
html5lib 0.11.1+
pyPdf 1.11+(可选)
然后我下载了以下依赖,但没找到确切的版本。(我猜 '+' 符号的意思是任何高于这个版本的都可以):
我把以下文件夹复制到了我的项目根目录:
xhtml2pdf-0.0.5.tar.gz \ dist \ xhtml2pdf-0.0.5.tar \ xhtml2pdf-0.0.5 \ xhtml2pdf
reportlab-3.0.tar.gz \ reportlab-3.0.tar \ reportlab-3.0 \ src \ reportlab
html5lib-0.999.tar.gz \ dist \ html5lib-0.999.tar \ html5lib-0.999 \ html5lib
pyPdf-1.13.tar.gz \ pyPdf-1.13.tar \ pyPdf-1.13 \ pyPdf
重点来了……一旦我添加了'from xhtml2pdf import pisa'这一行,我的应用就停止工作了。如果在localhost上运行,我看到的是空白屏幕;但如果我用GAE SDK上传,就会出现缺少模块的错误——每次的错误信息都不同,具体取决于我使用的依赖版本配置。
请记住,我对GAE、Python和编程都是新手。
2 个回答
我找到了一种在GAE上运行最新版本的xhtml2pdf的方法。
我把html2pdf和reportlab的最新版本以及它们需要的其他文件复制到了应用程序的根目录,还对reportlab做了一点小修改。
代码可以在这里找到:https://github.com/danimajo/pineapple_pdf
演示可以在这里查看:http://flaskpineapple.appspot.com/pdf/
我现在明白了,XHTML2PDF这个东西是没法用了。我还是不知道具体原因,但我决定单独使用ReportLab来解决问题。