def _posting_list_table(self, canvas, x1, y1, x2, y2, shipping_labels):
style = self.table_style[:]
table = [self.table_header]
for i, shipping_label in enumerate(shipping_labels, start=1):
row = (
str(shipping_label.tracking_code),
str(shipping_label.receiver.zip_code),
str(shipping_label.package.posting_weight),
self.yes if ExtraService.get(EXTRA_SERVICE_AR) in shipping_label else self.no,
self.yes if ExtraService.get(EXTRA_SERVICE_MP) in shipping_label else self.no,
self.yes if ExtraService.get(EXTRA_SERVICE_VD) in shipping_label else self.no,
str(shipping_label.value).replace(".", ",") if shipping_label.value is not None else "",
str(shipping_label.invoice_number),
shipping_label.get_package_sequence(),
shipping_label.receiver.name[:self.max_receiver_name_size],
)
# noinspection PyTypeChecker
table.append(row)
if i % 2:
style.append(('BACKGROUND', (0, i), (-1, i), colors.lightgrey))
table_flow = Table(
table,
colWidths=self.col_widths,
style=TableStyle(style),
)
w, h = table_flow.wrap(0, 0)
table_flow.drawOn(canvas, x1, y2 - h - 50 * mm)
python类TableStyle()的实例源码
def AddPage(self):
self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
#self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW1*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 15))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
#self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch])
self.Score_Table=Table(self.Score_Data,[.5*inch]+[(self.cW1*cm)-.5*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 18))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
#self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW1*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 15))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
#self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch])
self.Score_Table=Table(self.Score_Data,[.5*inch]+[(self.cW1*cm)-.5*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 18))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def Add_Consolidation(self):
fill=16-self.table_count
self.elements.append(Spacer(1, fill*15))
self.Consolidation_Table=Table(self.CONSOLIDATION,[9*cm]+[4*cm]+[1*cm]*3+[9*cm]*3,[.3*cm]+[.3*cm]*4)
self.Consolidation_Table.setStyle(TableStyle(self.Consolidation_Style))
self.elements.append(Spacer(1, 10))
self.elements.append(self.Consolidation_Table)
def AddPage(self):
self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
#self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW1*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 15))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
#self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch])
self.Score_Table=Table(self.Score_Data,[.5*inch]+[(self.cW1*cm)-.5*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 18))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 15))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def AddPage(self):
#self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch])
self.Score_Table=Table(self.Score_Data,[.3*inch]+[(self.cW1*cm)-.3*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm])
self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm])
self.Score_Table.setStyle(TableStyle(self.Score_T_Style))
self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style))
self.elements.append(self.Score_Table)
self.elements.append(Spacer(1, 15))
self.elements.append(self.Attendance_Table)
self.elements.append(PageBreak())
def add_info(self):
ptext = '<b><font size=14>Report Info</font></b>'
self.Story.append(Paragraph(ptext, self.styles['BodyText']))
self.Story.append(Spacer(1, 0.1*inch))
data = [
['Request Name', self.request['custom_name']],
['Request Id', str(self.request['_id'])],
['Email', self.request['email']],
['Generated on', self.time_str()],
['Download Link', '<a href="http://{0}/query/#!/status/{1}">{0}/query/#!/status/{1}</a>'.format(
self.download_server, self.request['_id'])]
]
data = [[i[0], pg(i[1], 1)] for i in data]
t = Table(data)
t.setStyle(TableStyle([
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black)
]))
self.Story.append(t)
# full request timeline / other processing info
def gather_elements(self, client, node, style):
# A field has two child elements, a field_name and a field_body.
# We render as a two-column table, left-column is right-aligned,
# bold, and much smaller
fn = Paragraph(client.gather_pdftext(node.children[0]) + ":",
style=client.styles['fieldname'])
fb = client.gen_elements(node.children[1],
style=client.styles['fieldvalue'])
t_style=TableStyle(client.styles['field-list'].commands)
return [DelayedTable([[fn, fb]], style=t_style,
colWidths=client.styles['field-list'].colWidths)]
def gather_elements(self, client, node, style):
# Multiple authors. Create a two-column table.
# Author references on the right.
t_style=TableStyle(client.styles['field-list'].commands)
colWidths = client.styles['field-list'].colWidths
td = [[Paragraph(client.text_for_label("authors", style)+":",
style=client.styles['fieldname']),
client.gather_elements(node, style=style)]]
return [DelayedTable(td, style=t_style,
colWidths=colWidths)]
def gather_elements(self, client, node, style):
fb = client.gather_pdftext(node)
t_style=TableStyle(client.styles['field-list'].commands)
colWidths=client.styles['field-list'].colWidths
if self.adjustwidths:
colWidths = map(client.styles.adjustUnits, colWidths)
label=client.text_for_label(self.labeltext, style)+":"
t = self.TableType([[Paragraph(label, style=client.styles['fieldname']),
Paragraph(fb, style)]],
style=t_style, colWidths=colWidths)
return [t]
def gather_elements(self, client, node, style):
fb = client.gather_pdftext(node)
t_style=TableStyle(client.styles['field-list'].commands)
colWidths=client.styles['field-list'].colWidths
if self.adjustwidths:
colWidths = map(client.styles.adjustUnits, colWidths)
label=client.text_for_label(self.labeltext, style)+":"
t = self.TableType([[Paragraph(label, style=client.styles['fieldname']),
XPreformatted(fb, style)]
], style=t_style, colWidths=colWidths)
return [t]
def gather_elements(self, client, node, style):
# I need to catch the classifiers here
tt = []
dt = []
ids = []
for n in node.children:
if isinstance(n, docutils.nodes.term):
for i in n['ids']: # Used by sphinx glossary lists
if i not in client.targets:
ids.append('<a name="%s"/>' % i)
client.targets.append(i)
o, c = client.styleToTags("definition-list-term")
tt.append(o + client.gather_pdftext(n) + c)
elif isinstance(n, docutils.nodes.classifier):
o, c = client.styleToTags("definition-list-classifier")
tt.append(o + client.gather_pdftext(n) + c)
else:
dt.extend(client.gen_elements(n, style))
# FIXME: make this configurable from the stylesheet
t_style = TableStyle (client.styles['definition'].commands)
cw = getattr(client.styles['definition'],'colWidths',[])
if client.splittables:
node.elements = [
Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']),
SplitTable([['',dt]] , colWidths=cw, style = t_style )]
else:
node.elements = [
Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']),
DelayedTable([['',dt]] , colWidths=[10,None], style = t_style )]
return node.elements
def gather_elements(self, client, node, style):
# This should work, but doesn't look good inside of
# table cells (see Issue 173)
#node.elements = [MyIndenter(left=client.styles['blockquote'].leftIndent)]\
#+ client.gather_elements( node, style) + \
#[MyIndenter(left=-client.styles['blockquote'].leftIndent)]
# Workaround for Issue 173 using tables
leftIndent=client.styles['blockquote'].leftIndent
rightIndent=client.styles['blockquote'].rightIndent
spaceBefore=client.styles['blockquote'].spaceBefore
spaceAfter=client.styles['blockquote'].spaceAfter
s=copy(client.styles['blockquote'])
s.leftIndent=style.leftIndent
data=[['',client.gather_elements( node, s)]]
if client.splittables:
node.elements=[MySpacer(0,spaceBefore),SplitTable(data,
colWidths=[leftIndent,None],
style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0],
["LEFTPADDING",[0,0],[-1,-1],0],
["RIGHTPADDING",[0,0],[-1,-1],rightIndent],
["BOTTOMPADDING",[0,0],[-1,-1],0],
])), MySpacer(0,spaceAfter)]
else:
node.elements=[MySpacer(0,spaceBefore),DelayedTable(data,
colWidths=[leftIndent,None],
style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0],
["LEFTPADDING",[0,0],[-1,-1],0],
["RIGHTPADDING",[0,0],[-1,-1],rightIndent],
["BOTTOMPADDING",[0,0],[-1,-1],0],
])), MySpacer(0,spaceAfter)]
return node.elements
def gather_elements(self, client, node, style):
# Either use the figure style or the class
# selected by the user
st_name = 'figure'
if node.get('classes'):
st_name = node.get('classes')[0]
style=client.styles[st_name]
cmd=getattr(style,'commands',[])
image=node.children[0]
if len(node.children) > 1:
caption = node.children[1]
else:
caption=None
if len(node.children) > 2:
legend = node.children[2:]
else:
legend=[]
w=node.get('width',client.styles['figure'].colWidths[0])
cw=[w,]
sub_elems = client.gather_elements(node, style=None)
t_style=TableStyle(cmd)
table = DelayedTable([[e,] for e in sub_elems],style=t_style,
colWidths=cw)
table.hAlign = node.get('align','CENTER').upper()
return [MySpacer(0, style.spaceBefore),table,
MySpacer(0, style.spaceAfter)]
def gather_elements(self, client, node, style):
rows = [client.gen_elements(n) for n in node.children]
t = []
for r in rows:
if not r:
continue
t.append(r)
t_style = TableStyle(client.styles['table'].commands)
colWidths = client.styles['table'].colWidths
return [DelayedTable(t, style=t_style, colWidths=colWidths)]
def gather_elements(self, client, node, style):
# Each child is a hlistcol and represents a column.
# Each grandchild is a bullet list that's the contents
# of the column
# Represent it as a N-column, 1-row table, each cell containing
# a list.
cells = [[ client.gather_elements(child, style) for child in node.children]]
t_style=TableStyle(client.styles['hlist'].commands)
cw=100./len(node.children)
return [ DelayedTable( cells,
colWidths=["%s%%"%cw,]*len(cells),
style=t_style
)]