3

如何设置表格的左侧位置?

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))
4

2 回答 2

19

找到神奇的 hAlign 关键字:

t = Table(data, (6*cm,6*cm,2*cm,2*cm,2*cm), None, style=ts, hAlign='LEFT')
于 2012-08-06T08:24:49.633 回答
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)

pdf中的结果表

于 2017-01-19T14:26:57.193 回答