报告实验室PDF表格中的换行
我正在使用Report Lab库中的表格功能来在PDF报告上打印一个表格。我想知道是否可以设置这个表格,让单元格里的内容自动换行。
举个例子,我有一段文字放不下在某个列的单元格里。我希望表格能够自动换行,把单元格的内容调整到适合列的宽度。这样可以吗?
3 个回答
1
*整个单词换行的代码
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, Table, TableStyle
from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT, TA_CENTER
from reportlab.lib import colors
# bodytext style used for wrapping data on flowables
styles = getSampleStyleSheet()
styleN = styles["BodyText"]
#used alignment if required
styleN.alignment = TA_LEFT
styleBH = styles["Normal"]
styleBH.alignment = TA_CENTER
hdescrpcion = Paragraph('''<b>descrpcion</b>''', styleBH)
hpartida = Paragraph('''<b>partida</b>''', styleBH)
descrpcion = Paragraph('long long long long long long long long long long long long long long long long long long long long line ', styleN)
partida = Paragraph('1', styleN)
data= [[hdescrpcion, hpartida],
[partida ,descrpcion]]
table = Table(data)
table.setStyle(TableStyle([
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
c = canvas.Canvas("a.pdf", pagesize=A4)
table.wrapOn(c, 50, 50)
table.drawOn(c, 100,600)
c.save()
2
我的解决办法是,在字符串中强制换行:
def __chopLine(line, maxline):
cant = len(line) / maxline
cant += 1
strline = ""
index = maxline
for i in range(1,cant):
index = maxline * i
strline += "%s\n" %(line[(index-maxline):index])
strline += "%s\n" %(line[index:])
return strline
24
你可以在表格元素里放任何可以流动的内容。为了保持一致性,最好把所有的表格元素都设置为可流动的,这样它们的样式就可以统一了。在你的情况下,你很可能需要一个段落的可流动内容。例如:
styles = getSampleStyleSheet()
text = Paragraph("long line",
styles['Normal'])
你可以把`文本`放进你提供给表格的数据里,它会自动换行。