如何使用reportlab

时间:2017-08-27 02:30:36

标签: python reportlab

我想通过python 3.6从reportlab打印到PDF标签,然后检查了reportlab中表的用法。所有方法都是常规形式。

我想合并单元格以实现最终效果,如下所示。 <>包含数据库中的记录。 My label requirements 通过“跨度”方法,我得到了这里的表格: 当我遇到最后一行时,我无法拆分它。因为我使用0.5cm x16,0.5cmx11来格式化表格。现在,我应该将其更改为0.25 cmx32,0.25cm x 22吗?它必须是群众工作。 My result

有人给我一个解决这个问题的建议吗?我需要一个方向。谢谢。 *如果只是画线和输出文字,我无法实现对齐,valign,换行等。

我的代码在这里:

# -*- coding:utf-8 -*-

from reportlab.lib import colors
from reportlab.lib.pagesizes import A4,cm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
 
doc = SimpleDocTemplate("LabelTest.pdf", pagesize=A4)
# container for the 'Flowable' objects
elements = []
 
data= [['1', '', '','','','','','','', '', '', '', '13', '', '', ''],
       ['', '', '','','','','','','', '', '', '', '', '', '', ''],
       ['', '', '','','','','','','', '', '', '', '', '', '', ''],
       ['4','', '','','','','','','', '', '', '', '13', '14', '15', '16'],
       ['5', '', '','','','','','','7','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['6', '', '','','','','','','7','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['7', '', '','','','','','','7','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['8', '', '','','','','','','7','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['9', '', '','','','','7','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['', '', '','','','','','8','9', '10', '11', '12', '13', '14', '15', '16'],
       ['', '', '','','','','','8','9', '10', '11', '12', '13', '14', '15', '16']]


t=Table(data,16*[0.5*cm], 11*[0.5*cm],)

t.setStyle(TableStyle([
    ('GRID',(0,0),(-1,-1),1,colors.black),
    ('SPAN',(-4,0),(-1,3)),   # Right corner for logo image
    ('SPAN',(0,0),(-5,2)),    # First two rows for product des and surface
    ('SPAN',(0,3),(-5,3)),    # Third row for product requirements
    ('SPAN',(0,4),(5,7)),     # For product picture
    ('SPAN',(6,3),(-1,6)),    # Description and size
    ('SPAN',(6,4),(-1,7)),    # For mat'l no.
    ('SPAN',(0,8),(5,-1)),    # EAN-13
    ]))


elements.append(t)
# write the document to disk
doc.build(elements)

目前,我找到了一个自己做的解决方案,也许它不是最好的解决方案,但它确实有很大帮助。

# -*- coding:utf-8 -*-

from reportlab.lib import colors
from reportlab.lib.pagesizes import A4,cm
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
 
doc = SimpleDocTemplate("ex09_1-ReyherTable.pdf", pagesize=A4)
# container for the 'Flowable' objects
elements = []
 
data0= [['1','9']]
t0=Table(data0,colWidths=[6*cm,2*cm],rowHeights=[2*cm])
t0.setStyle(TableStyle([
    ('GRID',(0,0),(-1,-1),1,colors.black),   
    ]))


data1= [['2','9']]
t1=Table(data1,colWidths=[3*cm,5*cm],rowHeights=[2*cm])
t1.setStyle(TableStyle([
    ('GRID',(0,0),(-1,-1),1,colors.black),   
    ]))

data2= [['3','4','5'],
        ['4','5','6'],]
t2=Table(data2,colWidths=[3*cm,2.5*cm,2.5*cm],rowHeights=2*[0.75*cm])
t2.setStyle(TableStyle([
    ('GRID',(0,0),(-1,-1),1,colors.black),
    ('SPAN',(0,0),(0,-1)),
    ('SPAN',(-1,0),(-1,-1)),
    ]))

elements.append(t0)
elements.append(t1)
elements.append(t2)
# write the document to disk
doc.build(elements)

0 个答案:

没有答案