python Reportlab,在pdf中并排添加两个表

时间:2015-06-16 11:37:04

标签: python-2.7 reportlab

我正在尝试使用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) 

2 个答案:

答案 0 :(得分:0)

要使2个表水平,我认为不可能使用reportLab。 我有同样的问题,我找到了解决问题的方法。 我只创建一个表来表示两个表,我隐藏了2之间的网格,所以它看起来像是2个表。使用该解决方案,您可以按照自己的方式定位2个表。 我的setStyle()看起来像那样

        t.setStyle(TableStyle([
                           ('GRID', (0,0), (4,1), 0.5, colors.black),
                            ('ALIGN',(1,1),(-1,-1),'CENTER'),
                            ('BACKGROUND',(0,0),(4,0),colors.lightgrey),
                            ('BACKGROUND',(3,3),(3,5),colors.lightgrey),
                            ('BOX',(3,3),(3,5),0.5,colors.black),
                            ('BOX',(4,3),(4,5),0.5,colors.black)]))

答案 1 :(得分:0)

嗯,有一种解决方法。 您可以将表添加到具有两列和一行的另一个表中。 像这样的东西。

    data= [(t1, t2)]
    t = Table(data, [250, 250])
    t.setStyle(TableStyle([
               ('VALIGN',(0,0),(-1,-1),'TOP')
               ]))