Невозможно загрузить изображения / файлы pisa pdf Django python - PullRequest
0 голосов
/ 22 января 2012

У меня раньше была проблема, когда не отображались китайские символы, даже когда я указывал @font-face для использования шрифта UTF-8. Оказывается, я также не могу отображать изображения ... поэтому мне кажется, что я не могу вставить ни один из файлов в мой pdf.

Это код, который я использую:

<code>def render_to_pdf(template_src, context_dict):
    """Function to render html template into a pdf file"""
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)
    result = StringIO.StringIO()

    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")),
                                            dest=result,
                                            encoding='UTF-8',
                                            link_callback=fetch_resources)
    if not pdf.err:
        response = http.HttpResponse(result.getvalue(), mimetype='application/pdf')

        return response

    return HttpResponse('We had some errors<pre>%s
'% escape (html)) def fetch_resources (uri, rel): импорт os.path из настроек импорта django.conf путь = os.path.join ( settings.STATIC_ROOT, uri.replace (settings.STATIC_URL, "")) Обратный путь

HTML

<img src="/static/images/bc_logo_bw_pdf.png" />

и

    @font-face {
        font-family: "Wingdings";
        src: url("/static/fonts/wingdings.ttf");
    }

Я посмотрел другие квесты на SO, но это не помогло. Также нет никаких исключений, происходящих в двух функциях. Также в функции fetch_resources возвращенный путь был правильным полным путем к файлу, то есть /home/<user>/project/static/images/bc_logo_bw_pdf.png и /home/<user>/project/static/fonts/wingdings.ttf, и я не понимаю, что не так.

UPDATE Каждый раз, когда я создаю PDF, я получаю это сообщение на консоли

No handlers could be found for logger "ho.pisa"

это может быть связано?

ОБНОВЛЕНИЕ № 2

Теперь шрифт работает, я совершил глупую ошибку ... У используемого мной шрифта не было китайского юникода. Но я по-прежнему не могу вставлять изображения в PDF, будь то JPEG, GIF или PNG.

Ответы [ 5 ]

3 голосов
/ 12 февраля 2012

Я наконец-то решил проблему, с которой столкнулся ... оказывается, она не работает, если я установил высоту body с помощью css ... как только я удалил эту строку, изображение загружалось идеально ....

0 голосов
/ 07 мая 2014

без атрибута width и height изображение не будет работать. добавить атрибуты ширины и высоты.

<img src="{% static 'images/logo.png' %}" alt="image" width="200" height="150" />

это исправление работает для меня.

0 голосов
/ 02 апреля 2014

Все выглядит лучше. Попробуйте один раз с файлом изображения JPG. В моем случае файл PNG также не работал.

<img src="/static/images/<name>.jpg" />
0 голосов
/ 18 марта 2013

Для меня (django 1.4, python 2.7 pisa == 3.0.33), если я поставлю полный путь изображения вместо относительного, это работает для меня. Попробуйте сделать то же самое.

0 голосов
/ 10 февраля 2012

У меня такая же проблема здесь.Не сдавайся с XHTML2PDF Пиза.Пиза использует PIL для генерации PDF и использует lib zip декодер для вставки изображений.Вы должны проверить, правильно ли установлен ваш PIL с zip-декодером, шрифтами и несколькими компонентами.

Я решил эту проблему, установив PIL с zip-декодером.http://obroll.com/install-python-pil-python-image-library-on-ubuntu-11-10-oneiric/

Если вам нужна более подробная информация, вы можете прочитать мою статью здесь: http://obroll.com/how-to-load-images-files-style-css-in-pdf-using-pisa-xhtml2pdf-on-django/

...