2009-04-24 1 views
5

Предположим, у меня есть страница HTML/CSS с некоторыми изображениями в ней, и я хотел бы сгенерировать PDF из этого источника в Python - возможно?Как сгенерировать PDF из источника HTML/CSS (включая изображения) в Python?

+0

один раз или только как часть кнопки «загрузить эту страницу в PDF» на веб-странице? Какая платформа? Mac OS X позволяет сохранять любую веб-страницу в формате PDF. –

ответ

4

http://www.xhtml2pdf.com/

установка была немного изворотливой для меня, но в остальном все работало нормально.

+0

Просто столкнулся с этим после публикации. Работайте отлично! –

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 

(Это вид Джанго, который генерирует квитанцию, но, очевидно, вы можете использовать Пизу в любой обстановке)

Вы будете иметь чтобы настроить HTML, чтобы заставить его играть как можно лучше с Пизой.

4

Существует wkhtmltopdf, возможно, лучший вариант, который я недавно начал использовать для своего проекта. Он не только поддерживает почти полный CSS, но и javascript. Сначала попробуйте выполнить команду wkhtmltopdf, чтобы понять ее силу. Затем вы используете его расширение python.

Вот ссылки

Это было немного сложно установить для меня. Поэтому я написал этот быстрый и грязный сценарий.

+2

Желание я мог бы дать +2 для скрипта! Благодаря! – heltonbiker