使用Python将HTML转换为PDF

时间:2011-09-28 14:05:53

标签: python html django wkhtmltopdf html2pdf

我正在尝试将HTML转换为Django中的PDF文档但尚未成功。

我尝试过使用wkhtmltopdf 0.9.9,但是Apache抛出了wkhtmltopdf无法连接到服务器的错误。当我直接使用wkhtmltopdf时,它运行得很好并将HTML转换为PDF文档。

我也尝试过使用unoconv,但渲染的PDF文件没有应用任何CSS。我也尝试过使用xhtml2pdf。我再次面临同样的问题;渲染的PDF文件没有应用任何CSS样式。我花了今天和昨晚的大部分时间试图解决这个问题,我仍然没有更接近解决问题。

如果您需要更多信息,请与我们联系

3 个答案:

答案 0 :(得分:4)

为Django配置Pisa不应该是too hard

网上有几个例子可以告诉你如何做到这一点 解释如何链接到模板中的外部资源:

在你的情况下,你应该尝试第一篇博文中提到的链接回调函数:

def fetch_resources(uri, rel):
    """
    Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc.
    `uri` is the href attribute from the html link element.
    `rel` gives a relative path, but it's not used here.

    """
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

对于较新的Django版本,您可能应该使用STATIC_ROOT代替MEDIA_ROOT

然后在渲染方法中相应地使用fetch resources

pdf = pisa.pisaDocument(StringIO.StringIO(
        html.encode("UTF-8")), 
        result, 
        link_callback=fetch_resources,
        encoding="utf-8")

答案 1 :(得分:0)

我建议你使用pisa,pypdf和html5lib组合,它对我有用。

答案 2 :(得分:0)

一个可能但不那么优雅的解决方案是运行一个小脚本,通过无头浏览器组件(Linux上的webkit / xvfb)呈现html,然后将其保存为pdf。

相关问题