안녕하세요 모든 reportlab 마스터하나의 PageTemplate을 사용하여 reportlab에서 2 페이지를 작성하는 방법은 무엇입니까?
나는 웹을 검색했으며 여기 stackoverflow에서이 휴가를 해결하기 위해 노력하고 있습니다. 내 문제에 대해 비슷한 상황을 찾을 수 없습니다.
django 관리자에서 내 데이터베이스를 특정 형식으로 볼 작업을 만들려고합니다. 하나의 레코드를 선택하면 보고서를 한 페이지 pdf로 볼 수 있습니다. 어느 쪽이야. 사용자가 문제가 발생한 부분을 더 기록하려고 할 때 예를 들어 여러 레코드를 선택하면 보고서를 볼 수 있지만 모든 내용은 한 페이지 pdf로 유지됩니다.
페이지 당 레코드를 PDF로 표시하는 방법이 있습니까? 모든 reportlab 마스터 제다이,이 일을 올바른 방법으로 도와주세요.
다음은 내 코드입니다.
from django.contrib import admin
from models import LatestRsl
from io import BytesIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
from reportlab.lib.units import inch
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import BaseDocTemplate, PageTemplate, Paragraph, Frame
from reportlab.lib.pagesizes import letter
def go(modeladmin, request, queryset):
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'filename = testframe.pdf'
buffer = StringIO()
c = canvas.Canvas(buffer)
doc = BaseDocTemplate(buffer, showBoundary=1, leftMargin= 0.1*inch, rightMargin= 0.1*inch,
topMargin= 0.1*inch, bottomMargin= 0.1*inch)
signfr = Frame(5.1*inch, 1.2*inch, 2.8*inch, 0.44*inch, showBoundary=1)
modelfr = Frame(3.6*inch, 4.6*inch, 2.8*inch, 0.44*inch, showBoundary=1)
doc.addPageTemplates([PageTemplate(id= 'rsl_frame', frames=[signfr, modelfr]),
PageTemplate(id= 'rsl_frame2', frames=[signfr, modelfr])])
story = []
styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='Verdana9', fontName= 'Verdana', fontSize= 9))
styles.add(ParagraphStyle(name='VerdanaB10', fontName= 'VerdanaB', fontSize= 10))
for obj in queryset:
#1st frame
model = Paragraph(obj.make,styles["Verdana9"])
story.append(model)
modelfr.addFromList(story,c)
#2nd frame
signatory = Paragraph(obj.signatory,styles["VerdanaB10"])
story.append(signatory)
signfr.addFromList(story,c)
doc.build(story)
c.showPage()
c.save()
pdf = buffer.getvalue()
buffer.close()
response.write(pdf)
return response
스토리의 단락 사이에 페이지 브레이크 개체를 삽입하여 여러 페이지 문서를 얻을 수 있습니다. –