Задать вопрос

Как отдать html-страницу, а потом её конвертировать в PDF?

Всем привет.

Что делаю:

1) Парсю нужные мне страницы.
2) С этими данными динамически рендерю html-страницу.
3) Пытаюсь конвертировать html-страницу в pdf и отдать её юзерам.

Пытаюсь делать именно так, кибо парсер получает html-код (не всегда поддающийся нормальному разбору) и я через css и html привожу его в адекватный вид.

Пытаюсь сделать что-то типа:

Ошибка в том, что конвектор PDF не хочет принимать рендер html страницы.

def parse(request):
    done = csrf(request)
    if request.POST: # начало парсера
        USERNAME = request.POST.get('logins', '')
        PASSWORD = request.POST.get('password', '')
        dialogue_url = request.POST.get('links', '')
        total_pages = int(request.POST.get('numbers', ''))
        news = []
        news.extend(parse_one(USERNAME, PASSWORD, dialogue_url, total_pages))  #вызываю функцию парсера 
        contex = {
                    "news" : news,
                }
        done.update(contex) #конец парсера

        pageclan = render(request, 'marketing/parser.html', done) # как-то так пытаюсь рендерить страницу и сохранить её в переменную
        

        # create an API client instance #начало pdf форминга
        client = pdfcrowd.Client("username", "key")

        # convert a web page and store the generated PDF to a variable
        pdf = client.convertURI(pageclan)

         # set HTTP response headers
        response = HttpResponse(content_type="application/pdf")
        response["Cache-Control"] = "max-age=0"
        response["Accept-Ranges"] = "none"
        response["Content-Disposition"] = "attachment; filename=jivo_log.pdf"

        # send the generated PDF
        response.write(pdf)
        return response
  • Вопрос задан
  • 720 просмотров
Подписаться 7 Оценить Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
В pageclan содержится объект HttpResponse, а convertURI принимает ссылку на страницу. Надо что-то вроде

tmpl = get_template('marketing/parser.html')
html = tmpl.render(done)
pdf = client.convertHtml(html)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы