如何在Python中从HTML/CSS(包括图片)生成PDF?
假设我有一个包含一些图片的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
安装的时候有点小麻烦,不过其他方面都挺顺利的。