如何在画布上从上到下绘制一个段落?

saj*_*jid 3 python reportlab pypdf

我一直在尝试使用 PyPDF2 和 Reprortlab 创建 pdf。我需要绘制一个包含大量文本的流畅段落。问题是段落的大小可能会有所不同。我想保持所有页面的段落左上角(段落开头)固定。问题是当我在固定位置(画布上的 x,y)绘制段落时,左下角保留在该位置(x,y)。我猜这是 ReportLab 的默认行为。是否有调整或解决方法可以从左上角而不是左下角开始段落,以便段落从同一位置开始,而不管段落的大小?

小智 8

当使用段落的换行功能时,它将返回换行文本的总高度。这可以与文本所需的位置结合使用,以创建从左上角而不是左下角 0,0 绘制文本的外观。

def draw_paragraph(canvas, msg, x, y, max_width, max_height):
    message_style = ParagraphStyle('Normal')
    message = msg.replace('\n', '<br />')
    message = Paragraph(message, style=message_style)
    w, h = message.wrap(max_width, max_height)
    message.drawOn(canvas, x, y - h)
Run Code Online (Sandbox Code Playgroud)