Reportlab - 如果段落对于一行太长,如何引入换行符

Vin*_*nod 8 python pdf-generation newline reportlab

我有一个要添加到reportlab框架的文本列表

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

如果图例太长,则根本看不到末尾的文本.如何在这种情况下引入换行符.

Pol*_*Geo 16

这可能适用也可能不适用,但我刚刚了解到,\n我通常用于在Python字符串中引入新行的内容会被ReportLab的Paragraph对象忽略.

邮件列表中我了解到,在Paragraph中你可以使用HTML <br/>来引入新行.

这对我很有用.

  • `<br/>`和`<br />`工作.但是```引发了一个`ValueError:paraparser:语法错误:br标签中没有允许的内容 (5认同)
  • ReportLab使用XML解析器,因此XHTML比HTML更多,这意味着您必须具有结束标记。 (2认同)

nde*_*ker 6

正如PolyGeo所说,您可以使用<br />向段落添加新行.

将新行转换为<br />标记

replace('\n','<br />\n')
Run Code Online (Sandbox Code Playgroud)

更新的代码

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


小智 0

style.wordWrap = 'LTR'
Run Code Online (Sandbox Code Playgroud)

抱歉,如果我将其误解为letter,但段落本身也是“自动换行”,也与文档页面大小相关。

亚洲语言的用户指南值为“CJK”,可能您的设置是根据其他内容(例如亚洲语言分词)执行文本搜索终点线。将其设置为 None 应该可以完成此操作。