2012-02-21 2 views
1

아래의 코드는 99 행의 데이터와 각 페이지 나누기에서 반복되는 헤더가있는 멋진 테스트 테이블을 만듭니다. 테이블이 매우 좁아서 어떻게 나누어서 첫 페이지의 왼쪽에 1-37 행이 있고, 첫 페이지의 오른쪽에 38-74 행이 있는지, 그리고 두 번째 페이지의 왼편에 75-99 행. 저는 이것을 "페이지를 가로 질러 테이블 나누기"라고 부르지 만, 제가하려고하는 것에 대해 더 나은 이름이있을 수 있습니다. 그래서 정확하게 설명하기를 바랍니다.PDF 페이지에서 ReportLab 테이블을 분할하는 방법 (나란히)?

from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Frame, Spacer 
from reportlab.lib import colors 
from reportlab.lib.units import cm 
from reportlab.lib.pagesizes import A3, A4, landscape, portrait 
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet 
from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY 
from reportlab.pdfgen import canvas 

pdfReportPages = "C:\\Temp\\test.pdf" 
doc = SimpleDocTemplate(pdfReportPages, pagesize=A4) 

# container for the "Flowable" objects 
elements = [] 
styles=getSampleStyleSheet() 
styleN = styles["Normal"] 

# Make heading for each column and start data list 
column1Heading = "COL ONE" 
column2Heading = "COL TWO" 
# Assemble data for each column using simple loop to append it into data list 
data = [[column1Heading,column2Heading]] 
for i in range(1,100): 
    data.append(["Col 1 Row " + str(i),"Col 2 Row " + str(i)]) 

tableThatSplitsOverPages = Table(data, [2.5 * cm, 2.5 * cm], repeatRows=1) 
tableThatSplitsOverPages.hAlign = 'LEFT' 
tblStyle = TableStyle([('TEXTCOLOR',(0,0),(-1,-1),colors.black), 
         ('VALIGN',(0,0),(-1,-1),'TOP'), 
         ('LINEBELOW',(0,0),(-1,-1),1,colors.black), 
         ('BOX',(0,0),(-1,-1),1,colors.black), 
         ('BOX',(0,0),(0,-1),1,colors.black)]) 
tblStyle.add('BACKGROUND',(0,0),(1,0),colors.lightblue) 
tblStyle.add('BACKGROUND',(0,1),(-1,-1),colors.white) 
tableThatSplitsOverPages.setStyle(tblStyle) 
elements.append(tableThatSplitsOverPages) 

doc.build(elements) 
당신은 페이지 내에서 문서를 그리는 내용 영역을 지정할 수 있도록 여러 프레임이 PageTemplate을 만들어이를 위해 PageTemplates를 사용해야합니다

답변

2

. 불행히도 SimpleDocTemplate을 버리고 대신 BaseDocTemplate을 사용하고 자신 만의 PageTemplates (원하는 경우 다른 것들)를 제공하는 것을 의미합니다.

+1

감사합니다. Gordon - SimpleDocTemplate에 머물러 있기를 원했기 때문에이 기능이 내 응용 프로그램에 얼마나 중요한지 재확인하고 페이지 템플릿 수정 방법을 배우려는 노력이 필요하다는 것을 재확인 할 것입니다. 기존 페이지 템플리트의 갤러리가 어딘가에서 선택/학습 할 수 있습니까? – PolyGeo

+0

불행히도 ReportLab 사이트에서 찾을 수있는 것이 무엇이든간에 생각하지 않습니다. –

관련 문제