【发布时间】:2019-10-24 00:13:30
【问题描述】:
我正在尝试使用 python reportlab 在 pdf 中插入两个表格。
第二个表中的行数少于第一个表。
但是两个表的水平位置不匹配。
第二张桌子上出现了一些空白。
我怎样才能删除这个空间,以便两个表格水平对齐?
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
doc = SimpleDocTemplate("simple_table_grid.pdf", pagesize=letter)
elements = []
data= [['00', '01', '02', '03', '04'],
['10', '11', '12', '13', '14'],
['20', '21', '22', '23', '24'],
['30', '31', '32', '33', '34']]
data1= [['00', '01', '02', '03', '04'],
['10', '11', '12', '13', '14']]
t1=Table(data,5*[0.4*inch], 4*[0.4*inch],hAlign='LEFT')
t1.setStyle(TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
('TEXTCOLOR',(1,1),(-2,-2),colors.red),
('VALIGN',(0,0),(0,-1),'TOP'),
('TEXTCOLOR',(0,0),(0,-1),colors.blue),
('ALIGN',(0,-1),(-1,-1),'CENTER'),
('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
t2=Table(data1,5*[0.4*inch], 2*[0.4*inch],hAlign='RIGHT')
t2.setStyle(TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
('TEXTCOLOR',(1,1),(-2,-2),colors.red),
('VALIGN',(0,0),(0,-1),'TOP'),
('TEXTCOLOR',(0,0),(0,-1),colors.blue),
('ALIGN',(0,-1),(-1,-1),'CENTER'),
('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
t = [[t1,t2]]
temp = Table(t)
elements.append(temp)
doc.build(elements)
【问题讨论】:
-
我不清楚你想要什么。您是否希望 t1 和 t2 在同一行(t1 在左侧,t2 在右侧)并且您关心 t1 和 t2 之间的空间?或者你想要 t1 在顶部和 t2 在底部?在这种情况下,“水平对齐”对我来说更有意义。
-
是的,我希望 t1 和 t2 在同一行。但是发生了什么,当 t2 包含的行数少于 t1 时,t1 和 t2 不是从同一行开始。
-
好的,那么你想垂直对齐 t1 和 t2,对吧?您可以通过将样式
TableStyle([('VALIGN', (0,0), (-1,-1), 'TOP')])添加到表temp来将它们对齐在顶行。
标签: python-2.7 reportlab