纯Python解决方案转换XHTML为PDF
3 个回答
你问的其实是一个纯Python的HTML渲染器,这可不是个小工程,简单来说就是个大任务(像webkit这样的“真实”渲染器,背后可是经过了成千上万小时的努力)。据我所知,目前还没有这样的工具。
与其寻找一个HTML转PDF的转换器,我建议你可以先把报告做成一种容易转换的格式,比如说可以把它做成一个DOM(就是一组相互关联的对象),然后再为HTML和PDF输出写转换程序。这样的问题比直接把HTML转成PDF要简单得多,所以实现起来也容易得多。
你有没有考虑过 pyPdf 呢?我怀疑它的功能可能达不到你需要的丰富程度,但这算是一个开始,而且它是用纯Python写的。PdfFileWriter 这个类可以用来生成PDF文件,不过不幸的是,它需要 PageObject 实例,而它并没有提供很好的方法来组合这些实例,除了从已有的PDF文档中提取出来。遗憾的是,我找到的所有功能更强大的PDF页面生成包似乎都依赖于reportlab或其他不是纯Python的库 :-(。
Pisa 这个工具声称可以支持我想做的事情:
Pisa 是一个可以把 HTML 转换成 PDF 的工具,它使用了 ReportLab 工具包、HTML5lib 和 pyPdf。它支持 HTML 5 和 CSS 2.1(还有一些 CSS 3 的功能)。这个工具完全用纯 Python 编写,所以它可以在任何平台上使用。这个工具的主要好处是,如果你有一些网页技能,比如 HTML 和 CSS,就能很快生成 PDF 模板,而不需要学习新的技术。它可以很方便地和 Python 的框架结合使用,比如 CherryPy、KID 模板、TurboGears、Django、Zope、Plone、Google AppEngine(GAE)等。
所以我会进一步研究这个工具。