如何在reportlab生成的HTML格式PDF中添加换行符?
报错原因
Reportlab的Paragraph组件默认使用类HTML标记解析规则,原生不支持直接用\n作为换行符,直接传入带\n的文本时,解析器会错误生成带非法内容的<br>标签,从而抛出该语法错误。
解决方法
将从DataFrame提取的文本中的\n手动替换为Reportlab认可的闭合换行标签<br/>后,再传入Paragraph构造函数即可。同时建议将样式属性的调整放在创建Paragraph实例之前,避免样式不生效。
修改后的代码示例
from reportlab.lib.utils import htmlEscape # 文本含HTML特殊字符时需要引入 style_texto4=ParagraphStyle(name='Normal4', fontName='Times-Roman', fontSize=15) style_texto4.leading=16 # 提取原始文本并处理 raw_text = df.set_index('concat').loc[i]['Text'] # 替换换行符,如有特殊字符可先调用htmlEscape(raw_text)转义 processed_text = raw_text.replace('\n', '<br/>') texto4=Paragraph(processed_text, style=style_texto4) texto4.wrapOn(c, 600, 600) texto4.drawOn(c, 90, 380)
额外注意事项
- 如果文本本身包含
<、>、&这类HTML特殊字符,需要先调用htmlEscape()方法处理原始文本,避免解析器误判为标签导致异常。 - 不要在
<br/>标签中添加任何额外内容,保持标签为标准闭合格式即可。
内容的提问来源于stack exchange,提问作者alb
相关产品推荐
相关产品推荐

