2016-10-05 7 views
0

나는 다음과 같은 형식으로 여러 페이지에 걸쳐 수있는 PDF 파일을 만들 수 Reportlab을 사용하고 텍스트 - QR 코드 생성 :Reportlab + SimpleDocTemplate + 표 - 여러 페이지

QR 코드 + H1 단락 + 2- 3 행의 텍스트

우리는 앞서 설명한 형식의 동적 요소를 지원해야합니다.

SimpleDocTemplate에서 Table을 사용하려고 생각했지만 여러 페이지에 걸쳐있을 수있는 것보다 동적 요소 수를 지원할 수있는 방법을 찾지 못했습니다.

어떻게 해결할 수 있습니까?

+0

긴 시간 동안,이 조각은 완전히 작동하지 않습니다,하지만 당신을 도울 수 있을까? – PyNico

+0

아니요, 내 작업에 적합합니까? – embedded

+0

PageTemplate을 사용하면이 상황에 맞는 템플릿을 만들 수 있습니다. QR 코드 + h1 단락 + 2-3 줄의 텍스트 – PyNico

답변

0

시작

내가 reportlab을 사용하지 않은하지만 당신은 PageTemplate을 확인 않았다
class StandardReport: 

def __init__(self,): 
    self.doc = BaseDocTemplate(destinationPath , showBoundary = 0, leftMargin=0.7*cm, rightMargin=0.7*cm, topMargin=0.7*cm, bottomMargin=0.7*cm, pagesize=A4) 
    self.simpleFrame = Frame(self.doc.leftMargin, self.doc.bottomMargin, self.doc.width, self.doc.height - 5*cm, id='normal') 

def createPdf(self): 
    templates = []; 
    self.doc.totalPages = 0; 

    self.fill_sample(); 
    templates.append(SamplePageTempalte(self)); 
    self.doc.totalPages = self.doc.totalPages + 1; 

    self.doc.addPageTemplates(templates); 
    self.doc.build(self.Elements) 

class SamplePageTempalte (PageTemplate): 
    def __init__ (self, context): 
     self.context = context 
     self.largeur = self.context.doc.pagesize[0] 
     self.hauteur = self.context.doc.pagesize[1] 
     self.simpleFrame = Frame(self.context.doc.leftMargin, self.context.doc.bottomMargin, self.context.doc.width, self.context.doc.height - 3*cm, id='normal') 
     PageTemplate.__init__ (self, id="GraphStatPageTemplateMonth", frames = [self.simpleFrame], pagesize=A4, onPage = self.context.footerAndHeader)