在reportlab中将宽度设置为textobject

时间:2017-03-14 19:01:42

标签: python reportlab

我正在使用reportlab创建报告。以下是在报告中插入文本的代码

c = canvas.Canvas("reports/abc.pdf", pagesize=A4)
t = c.beginText()
t.setFont('Times-Roman', 14)
t.setTextOrigin(0.3*inch,6.5*inch)
wraped_text = "\n".join(wrap(Desc,100)) # 100 is line width 
t.textLines(wraped_text)
c.drawText(t)

此代码适用于普通字符串,但当某些大写字母出现在文本中时,其宽度会增加,并且会超出页面。  那么,我可以根据页面宽度设置文本的宽度,而不是根据数字字符设置吗?

1 个答案:

答案 0 :(得分:1)

使用reportlab.platypus.Paragraph而不是绘制到画布,您将获得免费的文本包装。

您可以将HTML中的Paragraph<div>进行比较:Paragraph的宽度为100%(文档的宽度),高度取决于内容。< / p>

from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet

very_long_text = "Your very long text here ..."

styles = getSampleStyleSheet()
doc = SimpleDocTemplate("my_doc.pdf", pagesize=A4)
Story=[]
Story.append(Paragraph(very_long_text, styles["Normal"]))
doc.build(Story)