Reportlab - 如何在段落过长时插入换行

17 投票
3 回答
36310 浏览
提问于 2025-04-16 04:42

我有一段文字需要添加到一个reportlab的框架里。

style = getSampleStyleSheet()['Normal']
style.wordWrap = 'LTR'
style.leading = 12
for legend in legends:
    elements.append(Paragraph(str(legend),style))

如果说明文字太长,最后的文字就完全看不见了。那在这种情况下,怎么才能换行呢?

3 个回答

0
style.wordWrap = 'LTR'

抱歉,如果我把这个理解成了字母,但段落本身是“自动换行”的,这也和文档的页面大小有关。

对于亚洲语言,有一个用户指南的设置叫做 'CJK',可能你的设置是根据其他东西来决定文本的换行,比如亚洲语言的分词。把它设置为 None 应该就能解决这个问题。

14

正如PolyGeo所说,你可以使用<br />来在段落中添加换行。

将换行符转换为<br />标签

replace('\n','<br />\n')

更新后的代码

 for legend in legends:
        content = str(legend).replace('\n','<br />\n')
        elements.append(Paragraph(content, style))
29

这可能适用,也可能不适用,但我刚刚了解到,在Python字符串中我通常用来换行的\n在ReportLab的段落对象中是被忽略的。

我从一个邮件列表上了解到,在段落中你可以使用HTML的<br/>来换行。

这样对我来说效果很好。

撰写回答