6

可以用 weasyprint 在 django 中合并多个 pdf 吗?

我有这样的事情:

def verpdf(request, pk):
    odet = get_object_or_404(Note, pk = pk)
    template = get_template('pdfnot.html')
    template1 = get_template('pdfnot2.html')
    p1 = template.render({'odet': odet}).encode(encoding="ISO-8859-1")
    p2 = template1.render({'note':odet}).encode(encoding="ISO-8859-1")
    pdf1 = HTML(string=p1).render()
    pdf2 = HTML(string=p2).render()
    all_pages = [po for po in pdf1.pages for doc in pdf2.pages]
    pdf_file = pdf1.copy(all_pages).write_pdf()
    http_response = HttpResponse(pdf_file, content_type='application/pdf')
    http_response['Content-Disposition'] = 'filename="report.pdf"'

    return http_response

但是我无法加入这两个文件,总是只输出第一个模板,可以将两个文档合并成一个 pdf 吗?你能帮助我吗?谢谢。

4

2 回答 2

10

花了我一段时间,但我解决了,是我不理解文档的错,哈哈,如果有人有同样的问题,这里是代码:

def verpdf(request, pk):
    odet = get_object_or_404(Note, pk = pk)
    template = get_template('pdfnot.html')
    template1 = get_template('pdfnot2.html')
    p1 = template.render({'odet': odet}).encode(encoding="ISO-8859-1")
    p2 = template1.render({'note':odet}).encode(encoding="ISO-8859-1")
    pdf1 = HTML(string=p1)
    pdf2 = HTML(string=p2)
    pdf11 = pdf1.render()
    pdf12 = pdf2.render()

    val = []

    for doc in pdf11, pdf12:
        for p in doc.pages:
            val.append(p)

    pdf_file = pdf11.copy(val).write_pdf() # use metadata of pdf11

    http_response = HttpResponse(pdf_file, content_type='application/pdf')
    http_response['Content-Disposition'] = 'filename="report.pdf"'

    return http_response

有了这个有两页的pdf输出。

于 2016-08-17T05:17:54.323 回答
1
  • 简短而简单的解决方案是
  • <p style="page-break-before: always"></p>在 html 文件中的 body 标记之后添加这个
  • 它对我有用
于 2020-05-23T14:25:51.520 回答