2016-05-17 10 views
0

私はpythonでreportlabを使用してpdfレポートを生成しようとしていますが、いくつかのページに沿って大きなテーブルを分割しています。問題は、それが私のフッタを上書きし、私はページテンプレート内のフレームでそれを制限したいと思います。レポートライブラリのページテンプレートを動的に繰り返します

tableTemplate新しいページが生成されるたびに、テーブルの長さやページ内の行数がわからないことを考慮して、どのように使用できますか?私は、テンプレートに新しいページが生成されるたびに繰り返す方法を発見していないが、私は、ドキュメントのbottomMarginを増加し、マージンの外にフッターを配置することによって、問題を解決し

def report_pdf(self): 
    buffer = self.buffer 
    doc = SimpleDocTemplate(buffer, 
          rightMargin=30, 
          leftMargin=30, 
          topMargin=30, 
          bottomMargin=0, 
          pagesize=self.pagesize) 
    elements = [] 
    table_data = gather_table_data() 
    long_table = Table(table_data) 
    elements.append(long_table) 
    frameMain = Frame(x1=doc.leftMargin, 
         y1=doc.topMargin, 
         width=doc.width, 
         height=doc.height) 
    tableFrame = Frame(x1=doc.leftMargin, 
         y1=doc.topMargin, 
         width=doc.width, 
         height=doc.height-50, 
         showBoundary=1) 
    mainTemplate = PageTemplate(id='main', frames=[frameMain]) 
    tableTemplate = PageTemplate(id='table', frames=[tableFrame]) 
    doc.addPageTemplates([mainTemplate, tableTemplate]) 
    doc.build(elements, onFirstPage=footer, onLaterPages=footer) 
    pdf = buffer.getvalue() 
    buffer.close() 
    return pdf 

答えて

0

:ここ

は私のコードです。フッタはドキュメントのキャンバス上に直接描画されていることを考慮すると、マージンの影響を受けず、フロー可能なテーブルはドキュメントのマージンによって制限されているため、フッタを上書きすることができませんでした。

関連する問題