我使用表格,但是,我在画布中绘制以控制可流动对象的位置,这是因为我有一个 pdf 格式的模板,我与 pyPDF 合并。
包装是在表格中完成的,但文字向上,而不是向下,这就是我所希望的。
c 是画布
代码
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, Table
from reportlab.lib.units cm
width, height = A4
styles = getSampleStyleSheet()
def coord(x, y, unit=1):
x, y = x * unit, height - y * unit
return x, y
descrpcion = Paragraph('long paragraph', styles["Normal"])
partida = Paragraph('1', styles["Center"])
candidad = Paragraph('120', styles["Center"])
precio_unitario = Paragraph('$52.00', styles["right"])
precio_total = Paragraph('$6240.00', styles["right"])
data= [[partida, candidad, descrpcion, precio_unitario, precio_total]]
table = Table(data, colWidths=[2.05 * cm, 2.7 * cm, 9.6 * cm,
2.65 * cm, 2.7 * cm])
c = canvas.Canvas(PDF, pagesize=A4)
table.wrapOn(c, width, height)
table.drawOn(c, *coord(1.8, 9.6, cm))
c.save()
原文由 Alquimista 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您用样式 [“Normal”] 包装文字时,描述文本会上升 您可以尝试将文字包装在样式 [“BodyText”] 中,这将允许您的文本根据您指定的单元格宽度自行对齐。您还可以包括类似于 HTML 文本格式的格式。
然后使用 TableStyle 对表格中的内容进行格式化,例如,彩色文本、居中段落、跨行/列等。
我将上面的代码编辑为一个工作版本(示例):