如何从 Python 中的 HTML / CSS(包括图像)源生成 PDF? [关闭]

Posted

技术标签:

【中文标题】如何从 Python 中的 HTML / CSS(包括图像)源生成 PDF? [关闭]【英文标题】:How to generate a PDF from an HTML / CSS (including images) source in Python? [closed] 【发布时间】:2010-10-21 15:36:09 【问题描述】:

假设我有一个 html / CSS 页面,其中包含一些图像,我想用 Python 从该源生成 PDF - 可能吗?

【问题讨论】:

仅一次或作为网页上“将此页面下载为 PDF”按钮的一部分?什么平台? Mac OS X 允许您将任何网页保存为 PDF。 【参考方案1】:

http://www.xhtml2pdf.com/

安装对我来说有点奇怪,但除此之外它运行良好。

【讨论】:

发帖后刚刚遇到。完美运行!【参考方案2】:

你可以用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 中的表现尽可能好。

【讨论】:

【参考方案3】:

wkhtmltopdf 是我最近开始用于我的项目的一个可能更好的选择。它不仅支持几乎完整的 CSS,还支持 javascript。首先尝试 wkhtmltopdf 命令以了解它的强大功能。然后你使用它的 python 扩展。

这里是链接

https://github.com/mreiferson/py-wkhtmltox http://code.google.com/p/wkhtmltopdf/

安装对我来说有点棘手。所以我写了这个又快又脏的脚本。

https://github.com/shon/cowspa3/blob/master/wkhtmltox-installer.sh

【讨论】:

希望我能给脚本+2!谢谢!

以上是关于如何从 Python 中的 HTML / CSS(包括图像)源生成 PDF? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用webdriver(python)从css(非内联)中按样式选择元素

如何从 Webpack 4 中的页眉/页脚(和 css/js 注入)生成静态页面的 html 模板(lodash 模板不起作用)?

如何从 Angular 项目中使用 javascript 导出独立的 html/css?

如何使用 Python 获取 CSS 背景颜色?

请问在CSS中如何调用本地图片?

在css中如何让文字显示方式从右边开始