如何在Python中从HTML/CSS(包括图片)生成PDF?

6 投票
3 回答
8233 浏览
提问于 2025-04-15 11:14

假设我有一个包含一些图片的HTML/CSS页面,我想用Python从这个页面生成一个PDF,这样可以吗?

3 个回答

4

最近我开始在我的项目中使用一个叫做wkhtmltopdf的工具,它可能是一个更好的选择。这个工具不仅几乎支持所有的CSS样式,还支持JavaScript。你可以先试试wkhtmltopdf命令,了解一下它的强大功能。然后再使用它的Python扩展。

这里有一些链接

对我来说,安装这个工具有点麻烦。所以我写了一个简单的脚本来帮助安装。

4

你可以使用Pisa来做一些事情,比如下面这样:

def receipt(request, id):
    import ho.pisa as pisa
    from django.template.loader import render_to_string
    from datetime import datetime

    r = get_or_404(id, request.affiliate)    
    now = datetime.now()
    contents = render_to_string('home/reservations/receipt.html', {
        'reservation': r,
        'today': now
    })
    filename = now.strftime('%Y-%m-%d') + '.pdf'
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=' + filename
    pdf = pisa.CreatePDF(contents, response)
    if pdf.err:
        message(request, 'Unable to generate the receipt.')
        return HttpResponseRedirect(reverse('view_reservation', args=[r.id]))    
    else:
        return response

(这是一个Django的视图,用来生成收据,但显然你可以在任何环境中使用Pisa)

不过,你需要对HTML进行一些调整,以确保它能和Pisa配合得更好。

4

http://www.xhtml2pdf.com/

安装的时候有点小麻烦,不过其他方面都挺顺利的。

撰写回答