архивирование PDF-файлов xhtml2pdf с помощью zipfile - PullRequest
0 голосов
/ 08 января 2012

Я использую следующую функцию для генерации моих файлов pdf из xhthml2pdf

def render_to_pdf(template_src, context_dict, filename):
    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")), encoding='UTF-8',  
            dest=result, 
            link_callback=fetch_resources )
    return pdf

Далее я использую следующую функцию в попытке сжать список объектов pdf

def generate_zip(object_list, template):
    result = StringIO.StringIO()
    zipped = zipfile.ZipFile(result, "w")
    for object in object_list:
        zipped.writestr("test.pdf", object)
    zipped.close()
    return result.getvalue()

Но я получаю следующую ошибку

TypeError: object of type 'pisaContext' has no len()

, которая заставляет меня поверить, что я не генерирую нужный объект для архивирования.Поэтому мой вопрос: как мне использовать xhtml2pdf для генерации pd-файла, пригодного для zipfile?

1 Ответ

0 голосов
/ 08 января 2012

pdf должна быть строкой (байтами).Может быть, вам нужно использовать result.getvalue () из результата render_to_pdf?

Я не использовал pisa широко: есть также метод сериализации для PisaDocument: pdf.dest.getvalue ()

...