2012-08-05 103 views
1

如何設置表格的左側位置?reportlab設置左表位置

response = HttpResponse(mimetype='application/pdf') 
response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name 
buffer = StringIO() 
PAGESIZE = pagesizes.portrait(pagesizes.A4) 
doc = SimpleDocTemplate(buffer, pagesize=PAGESIZE, leftMargin=1*cm) 
story = [] 

story.append(Paragraph(header_part2, styleN)) 
table_row = ['Total Score:',''] 
data.append(table_row) 
ts = [ 
    #header style  
    ('LINEABOVE', (0,0), (-1,0), 1, colors.gray), 
    ('LINEBELOW', (0,0), (-1,0), 1, colors.gray)] 
t = Table(data, (6*cm,6*cm), None, style=ts) 
    story.append(t) 
    doc.build(story) 
    pdf = buffer.getvalue() 
buffer.close() 
response.write(pdf) 

儘管段落從左側打印1釐米,但打印的表格幾乎沒有距左頁邊框的距離。

我必須在哪裏設置表格位置的leftMargin?

這同樣適用於我添加的圖像。他們似乎打印在某個地方。

story.append(Image(path,35,10)) 

回答

9

發現神奇hAlign關鍵字:

t = Table(data, (6*cm,6*cm,2*cm,2*cm,2*cm), None, style=ts, hAlign='LEFT') 
1

我想補充一點,你也可以設置在TABLESTYLE排列,就像你設置lineabovelinebelow

雖然這可能不是在本身有價值的信息,但要知道,水平對齊方式設置與關鍵字「ALIGN」,而不是很重要,「HALIGN」(如你輕鬆假設給定會是垂直對齊方式設置與'VALIGN'和上面的解決方案在函數調用中也有hAlign)。我瘋了,試圖整天與'HALIGN'對齊。

以下是您可以測試水平對齊('ALIGN')的代碼示例。

from reportlab.platypus import SimpleDocTemplate 
from reportlab.platypus.tables import Table, TableStyle 
from reportlab.lib import colors 

doc = SimpleDocTemplate('align.pdf', showBoundary=1) 

t = Table((('', 'Team A', 'Team B', 'Team C', 'Team D'), 
    ('Quarter 1', 100, 200, 300, 400), 
    ('Quarter 2', 200, 400, 600, 800), 
    ('Total', 300, 600, 900, 1200)), 
    (72, 45, 45, 45, 45), 
    (25, 15, 15, 15) 
) 

t.setStyle(TableStyle([ 
    ('ALIGN', (0, 0), (-1, -1), 'RIGHT'), 
    ('GRID', (0, 0), (-1, -1), 0.25, colors.red, None, (2, 2, 1)), 
    ('BOX', (0, 0), (-1, -1), 0.25, colors.blue), 
    ])) 

story = [t] 
doc.build(story) 

Resulting table in pdf