2016-08-17 73 views
1

可以將django中的多個pdf與weasyprint合併?Django和weasyprint,合併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?你可以幫我嗎?謝謝。

回答

2

我花了一段時間,但我解決了這個問題,是我的錯不明白的文檔笑,這裏是代碼,如果任何人有同樣的問題:

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輸出頁面。