python自动换行文本和报告实验室

hyrbngr7  于 2022-10-30  发布在  Python
关注(0)|答案(2)|浏览(227)

我有一个小代码,我想把我的长字符串 Package 在每10个字符,然后添加到一个PDF使用reportlab:
我是这样尝试的:

text = '*long_text_long_text_long_text_long_text*'
text = "\n".join(wrap(text, 10))
canvas.drawString(5,227, text)

我的PDF文件已经创建好了,但是在我想要断开线条的地方,我只能看到黑色的矩形。你可以看到所附的图片:

你能帮我吗?谢谢!

llmtgqce

llmtgqce1#

drawString只绘制一条线,因此您需要调整循环中每一条线的坐标。

y = 227
for line in wrap(text, 10):
    canvas.drawString(5, y, line)
    y += 15
hkmswyz6

hkmswyz62#

单独放置每一行的替代方法是使用段落:

from reportlab.lib.styles import getSampleStyleSheet
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A5
from reportlab.platypus import Paragraph

text = "long text<br />long text<br />long text<br />"
text_width=A5[0] / 2
text_height=A5[1] / 2
x = A5[0]/4
y = A5[1]/4

pdf = canvas.Canvas(filename="test.pdf", pagesize=A5)

styles = getSampleStyleSheet()
p = Paragraph(text, styles["Normal"])
p.wrapOn(pdf, text_width, text_height)
p.drawOn(pdf, x, y)

pdf.save()

除了支持手动换行外,Paragraph还支持自动换行。

相关问题