You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:06:03