纯Python解决方案转换XHTML为PDF

16 投票
3 回答
6222 浏览
提问于 2025-04-15 15:14

我想找一个纯Python的解决方案(适用于GAE),用来把网页转换成PDF。

我看过reportlab,但是它的文档主要讲的是如何从头开始生成PDF,而不是从HTML转换过来。

你有什么推荐的吗?比如pisa

编辑:
我的需求是我有一个HTML报告,我也想把它做成PDF。我会对这个报告的结构进行更新,所以我不想维护一个单独的PDF版本,而是希望能自动转换。
另外,因为我生成的报告是HTML,所以我可以确保它是格式良好的XHTML,这样转换成PDF会更简单。

3 个回答

4

你问的其实是一个纯Python的HTML渲染器,这可不是个小工程,简单来说就是个大任务(像webkit这样的“真实”渲染器,背后可是经过了成千上万小时的努力)。据我所知,目前还没有这样的工具。

与其寻找一个HTML转PDF的转换器,我建议你可以先把报告做成一种容易转换的格式,比如说可以把它做成一个DOM(就是一组相互关联的对象),然后再为HTML和PDF输出写转换程序。这样的问题比直接把HTML转成PDF要简单得多,所以实现起来也容易得多。

4

你有没有考虑过 pyPdf 呢?我怀疑它的功能可能达不到你需要的丰富程度,但这算是一个开始,而且它是用纯Python写的。PdfFileWriter 这个类可以用来生成PDF文件,不过不幸的是,它需要 PageObject 实例,而它并没有提供很好的方法来组合这些实例,除了从已有的PDF文档中提取出来。遗憾的是,我找到的所有功能更强大的PDF页面生成包似乎都依赖于reportlab或其他不是纯Python的库 :-(。

8

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)等。

所以我会进一步研究这个工具。

撰写回答