xhtml2pdf не выбирает изображение

я создаю pdf из html, и он преобразуется, но без изображения. Я также пробовал абсолютные URL-адреса, но функция PDF все еще не работает:

def test_pdf(request):

    template = get_template('../templates/index.html')
    html = template.render(Context(data))
    filename = 'pdfs/'+str(random.random())+'.pdf'

    file = open(filename, "w+b")
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=file, encoding='utf-8',link_callback=link_callback)
    # Return PDF document through a Django HTTP response
    file.seek(0)
    pdf = file.read()
    file.close()            # Don't forget to close the file handle
    return HttpResponse({"success":"success"})

def link_callback(uri, rel):

    sUrl = settings.STATIC_URL      # Typically /static/
    sRoot = settings.STATIC_ROOT    # Typically /home/userX/project_static/
    mUrl = settings.MEDIA_URL       # Typically /static/media/
    mRoot = settings.MEDIA_ROOT     # Typically /home/userX/project_static/media/


    if uri.startswith(mUrl):
        path = os.path.join(mRoot, uri.replace(mUrl, ""))

    elif uri.startswith(sUrl):
        path = os.path.join(sRoot, uri.replace(sUrl, ""))

    else:
        return uri  # handle absolute uri (ie: http://some.tld/foo.png)

    if not os.path.isfile(path):
            raise Exception(
                'media URI must start with %s or %s' % (sUrl, mUrl)
            )
    return path

файл настроек:

PROJECT_ROOT = "/var/www/html/newclone/userapi/" 
MEDIA_ROOT = path.join(PROJECT_ROOT,'media')
MEDIA_URL = '/media/'
STATIC_ROOT = path.join(PROJECT_ROOT,'static-root')
STATIC_URL =  "/static/"

Что в этом не так. pdf создан успешно, но изображения отсутствуют

HTML-файл:

<div class="h1"><img src="/media/xyz"></div>

person ankush madaan    schedule 08.06.2016    source источник
comment
Это не настоящий ответ, однако я с большим успехом использовал django-xhtml2pdf для рендеринга PDF-файлов с помощью django (github. com/chrisglass/django-xhtml2pdf), а также написал довольно обширную запись в блоге именно об этом (spapas.github.io/2015/11/27/pdf-in-django)... Для вашей проблемы это, вероятно, связано с абсолютным img src, который у вас есть там -- попробуйте использовать для этого тег {% static %} (или получите URL-адрес контента, если это медиа).   -  person Serafeim    schedule 08.06.2016
comment
@Serafeim Уже прочитал эти ссылки. Функция link_callback считывает медиа и заменяет URL-адрес, так как ключевое слово {% static %} поможет??   -  person ankush madaan    schedule 08.06.2016


Ответы (1)


Не мог даже представить ошибку: в моем css я написал:

.main{width:75%;}

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

person ankush madaan    schedule 08.06.2016