我正在尝试使用表格形式的项目列表创建一个 pdf 文件。到目前为止,这是我的代码。
def GeneratePDF():
def coord(x, y, unit=1):
x, y = x * unit, (y * unit)+440-(pdf_temp2)
return x, y
width, height = A4
styles = getSampleStyleSheet()
styleN = styles["BodyText"]
styleN.alignment = TA_LEFT
styleBH = styles["Normal"]
styleBH.alignment = TA_CENTER
pdf_temp2=(len(PDF_DATA))*31
hTaskNo = Paragraph('''<b>Task No</b>''', styleBH)
hTaskDescription = Paragraph('''<b>Task Description</b>''', styleBH)
hTimeTaken = Paragraph('''<b>Time Taken</b>''', styleBH)
hName = Paragraph('''<b>Name</b>''', styleBH)
hSignature = Paragraph('''<b>Signature</b>''', styleBH)
hDate = Paragraph('''<b>Date</b>''', styleBH)
hRemarks = Paragraph('''<b>Remarks</b>''', styleBH)
data= [[hTaskNo, hTaskDescription,hTimeTaken, hName, hSignature,hDate,hRemarks]]
for i in range(len(PDF_DATA)):
data.append(PDF_DATA[i])
Gx=-(len(data))
table = Table(data, colWidths=[1 * cm, 14 * cm, 1.2* cm,2.8* cm, 2.8 * cm,2.3*cm,3*cm])
table.setStyle(TableStyle([
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
('BACKGROUND',(0,0),(-1,Gx),colors.lightgrey)
]))
c = canvas.Canvas("myfile.pdf", pagesize=landscape(A4))
c.setFont("Helvetica",20)
c.drawString(245,545,"My title")
c.setFont("Helvetica",13)
c.drawString(36,515,"My description")
c.drawString(400,515,str(gw_value3))
table.wrapOn(c, width, height)
table.wrapOn(c, width, height)
table.drawOn(c, *coord(1.1, 1, cm))
c.save()
PDF_DATA
是一个包含我所有表格信息的列表。这个列表每次都会有不同的长度。
当这个列表变得太长时,表格最终会超出纸张的长度,而实际上不会在下一页中创建新表格。
是否有任何命令我可以使用,以便如果当前页面已满,它将在下一页中创建其余的表格内容。
我知道canv.showPage()
。这是我唯一可以使用的命令吗?