Динамически создавать и сохранять изображения с помощью Django и PIL / Django-Photologue - PullRequest
0 голосов
/ 17 марта 2010

Я хочу создать страницу HTML с динамическим содержимым, а затем сохранить результат в виде изображения, а также отобразить страницу для пользователя. Итак, пользователь записывается на конференцию и называет свое имя и организацию. Эти данные объединяются с элементами html / css, чтобы показать, как будет выглядеть их значок id для конференции (их имя и организация на фоне логотипа конференции) для предварительного просмотра. После утверждения страница сохраняется на сервере в формате изображения (PNG, PDF или JPG) для последующей распечатки администратором на физическом значке. Я использую Django и django-photologue с питанием от PIL.

Вид может выглядеть следующим образом

# app/views.py

def badgepreview(request, attendee_id):
    u = User.objects.get(id=attendee_id)
    name = u.name
    org = u.org

    return render_to_response('app/badgepreview.html',
        {'name':name,'org':org,},
        context_instance = RequestContext(request),
    )

Шаблон может выглядеть следующим образом

{# templates/app/badgepreview.html #}
{% extends "base.html" %}
{% block page_body %}
    <div style='background:url(/site_media/img/logo_bg.png) no-repeat;'>
        <h4>{{ name }}</h4>
        <h4>{{ org }}</h4>
    </div>
{% endblock %}

просто, но как сохранить результат? Или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 18 марта 2010

Единственное, о чем я могу думать, это сделать это в два прохода:

a) Используйте http://www.xhtml2pdf.com/ для преобразования HTML в PDF.

b) Используйте что-то вроде http://www.swftools.org/gfx_tutorial.html, чтобы преобразовать PDF в изображение.

Я не могу себе представить, что это было бы быстро ...

Возможно, вам лучше просто конвертировать и разрешить им загружать PDF (т. Е. Использовать только шаг a) выше) или пытаться создать значок напрямую без промежуточного шага HTML.

...