我有一个小代码,我想把我的长字符串 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文件已经创建好了,但是在我想要断开线条的地方,我只能看到黑色的矩形。你可以看到所附的图片:
你能帮我吗?谢谢!
llmtgqce1#
drawString只绘制一条线,因此您需要调整循环中每一条线的坐标。
y = 227 for line in wrap(text, 10): canvas.drawString(5, y, line) y += 15
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还支持自动换行。
2条答案
按热度按时间llmtgqce1#
drawString只绘制一条线,因此您需要调整循环中每一条线的坐标。
hkmswyz62#
单独放置每一行的替代方法是使用段落:
除了支持手动换行外,Paragraph还支持自动换行。