Reportlab的Paragraph组件使用<br>标签换行报错如何解决?
问题原因
Reportlab的Paragraph组件内置的HTML解析器对标签语法要求严格,<br>属于无内容的空标签,必须使用自闭合语法才能被正常识别,你写的非自闭合<br>会被解析器判定为语法错误,进而抛出对应的异常。
解决方案
方法1:直接修正br标签写法(同Paragraph内换行最优方案)
直接将原代码中的<br>改为自闭合格式<br/>(带空格的<br />也可正常识别),修改后的代码如下:
style = ParagraphStyle( name='Normal', spaceAfter=40, fontName='Times-BoldItalic', fontSize=18, ) text=Paragraph(f"<p> <b>{df.set_index('concat').loc[i]['Title']}</b> <br/> Some more text </p>", style=style)
方法2:拆分Paragraph实现换行
如果换行前后内容需要配置不同样式,也可以拆分出多个Paragraph实例实现换行效果,不需要额外添加HTML标签:
# 第一行文本 text_line1 = Paragraph(f"<p> <b>{df.set_index('concat').loc[i]['Title']}</b></p>", style=style) # 第二行文本 text_line2 = Paragraph("<p>Some more text</p>", style=style) # 后续将两个实例按顺序加入文档流即可
注意事项
Reportlab的Paragraph仅支持有限的HTML子集,所有空标签都必须使用自闭合语法,避免出现未闭合的标签导致解析报错。
内容的提问来源于stack exchange,提问作者alb
相关产品推荐
相关产品推荐

