【发布时间】:2018-11-05 00:37:30
【问题描述】:
这可以用reportlab在PDF文件中写入文本:
from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
c = canvas.Canvas("test.pdf")
c.drawString(1 * cm, 29.7 * cm - 1 * cm, "Hello")
c.save()
但是在处理多行文本时,不得不处理每一行的x, y 坐标是令人不快的:
text = "Hello\nThis is a multiline text\nHere we have to handle line height manually\nAnd check that every line uses not more than pagewidth"
c = canvas.Canvas("test.pdf")
for i, line in enumerate(text.splitlines()):
c.drawString(1 * cm, 29.7 * cm - 1 * cm - i * cm, line)
c.save()
有没有更聪明的方法来使用reportlab?
【问题讨论】:
-
@JoranBeasley:用
<br />替换\n是不够的;似乎必须引入Paragraph类等。所以这个问题在某种意义上是不同的,它询问我们是否必须引入像Paragraph这样的布局系统,或者是否有其他选项。 -
好吧,你问了关于流的问题……而段落是可流动的……drawString 不是可流动的……如果你觉得它不能解决你的问题,我可以重新打开它
-
我仍然不确定它怎么不是 stackoverflow.com/questions/3816006/… 的骗子......但为你重新打开了