我需要使用Python将HTML + CSS + Javascript文件从Django View转换为PDF。
我可以使用xhtml2pdf / PISA,但它只支持HTML& CSS,而不是Javascript,这是必需的。
另一种选择是py-wkhtmltox,但是它已经很老了,我还没能让它工作,我只是得到“ImportError:libwkhtmltox.so.0:无法打开共享对象文件:没有这样的文件或目录“,不知道从哪里获取该文件,然后只是蓝色重命名libwkhtmltox.so到libwkhtmltox.so.0,但后来我得到:
Traceback (most recent call last):
File "pdf_test1.py", line 5, in <module>
pdf.set_object_setting('path', 'http://www.google.com')
File "wkhtmltox.pyx", line 118, in wkhtmltox.Pdf.__getattr__ (wkhtmltox.c:1228)
AttributeError: 'wkhtmltox._Pdf' object has no attribute 'set_object_setting'
另一种选择是使用webkit(http://bharatikunal.wordpress.com/2010/01/31/converting-html-to-pdf-with-python-and-qt/)但我不能从Django视图执行“sys.exit(app.exec_())”。
我现在唯一能想到的就是从django视图创建一个单独的webkit python脚本和os.system,使“sys.exit(app.exec_())”成为可能,从而得到PDF的结果。但我对其他建议持开放态度,从django视图中使用os.system有点奇怪。
有什么想法吗?
答案 0 :(得分:3)
我建议使用wkhtmltopdf。它可以作为linux的静态二进制文件使用,因此您不应该遇到任何共享对象问题。 wkhtmltopdf包装webkit并支持javascript,你甚至可以告诉它在渲染发生之前运行任何JS代码的时间。我已经成功地使用它制作了一些页面的PDF,这些页面上有一些复杂的图表生成代码。只需使用subprocess.call()
启动它。