2013-09-06 31 views
15

Tôi đang làm việc trong một trang web bằng cách sử dụng Django và tôi in tệp .pdf bằng cách sử dụng Repotlab.Nhiều trang sử dụng Reportlab - Django

Bây giờ, tôi muốn tệp có nhiều trang, tôi có thể làm như thế nào?

Mã của tôi:

from reportlab.pdfgen import canvas 
from django.http import HttpResponse 

def Print_PDF(request): 
    response = HttpResponse(content_type='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename="resume.pdf"' 

    p = canvas.Canvas(response) 

    p.drawString(100, 100, "Some text in first page.") 
    p.drawString(200, 100, "Some text in second page.") 
    p.drawString(300, 100, "Some text in third page") 

    p.showPage() 
    p.save() 
    return response 

Cảm ơn trước.

Trả lời

28

showPage(), mặc dù tên khó hiểu của nó, thực sự sẽ kết thúc trang hiện tại, vì vậy mọi thứ bạn vẽ trên canvas sau khi gọi nó sẽ xuất hiện trên trang tiếp theo.

Trong ví dụ của bạn, bạn chỉ có thể sử dụng p.showPage() sau mỗi ví dụ p.drawString và tất cả chúng sẽ xuất hiện trên trang của riêng chúng.

def Print_PDF(request): 
    response = HttpResponse(content_type='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename="resume.pdf"' 

    p = canvas.Canvas(response) 

    p.drawString(100, 100, "Some text in first page.") 
    p.showPage() 

    p.drawString(200, 100, "Some text in second page.") 
    p.showPage() 

    p.drawString(300, 100, "Some text in third page") 
    p.showPage() 

    p.save() 
    return response 
+1

Tôi đã có nó, nhưng tôi không thể trả lời cho danh tiếng của mình. Câu trả lời của bạn là ** hoàn hảo **, cảm ơn rất nhiều. – Andres

Các vấn đề liên quan