2

我需要将 HTML+CSS+Javascript 文件从 Django 视图转换为 PDF,因此需要使用 Python。

我可以使用 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/ ) 但我不能执行 "sys .exit(app.exec_())" 来自 Django 视图。

我现在唯一能想到的就是从 django 视图创建一个单独的 webkit python 脚本和 os.system 它,使“sys.exit(app.exec_())”成为可能,从而生成 PDF。但我对其他建议持开放态度,从 django 视图使用 os.system 有点奇怪。

有任何想法吗?

4

1 回答 1

4

我建议使用wkhtmltopdf。它可以作为 linux 的静态二进制文件使用,因此您不应该遇到任何共享对象问题。wkhtmltopdf 包装了 webkit 并支持 javascript,您甚至可以告诉它在渲染发生之前运行任何 JS 代码的时间。我已经成功地使用它制作了页面的 PDF,这些页面上有一些复杂的图表生成代码。只需使用subprocess.call().

于 2012-04-19T20:27:47.287 回答