reportlab表格乱码
时间: 2025-02-10 22:01:03 浏览: 48
ReportLab 表格乱码解决方案
当使用 Python 的 ReportLab 库生成 PDF 文件中的表格时,如果遇到中文字符显示为乱码的情况,通常是因为字体设置不当所致。为了确保中文能够正常显示,在创建文档之前需加载支持中文的 TTF 字体文件。
可以利用 pdfmetrics
和 TTFont
方法注册自定义字体:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Table
# 注册中文字体(假设已下载并放置于项目目录下)
pdfmetrics.registerFont(TTFont('song', 'msyh.ttc')) # 微软雅黑字体为例[^1]
def create_pdf_with_chinese():
doc = SimpleDocTemplate("chinese_table.pdf", pagesize=A4)
data = [
['姓名', '年龄', '城市'],
['张三', '28', '北京'],
['李四', '35', '上海']
]
table_style = [('FONTNAME', (0, 0), (-1, -1), 'song')] # 设置整个表格使用的字体
elements = []
tbl = Table(data)
tbl.setStyle(table_style)
elements.append(tbl)
doc.build(elements)
上述代码片段展示了如何通过指定 'song'
这一名称来应用微软雅黑作为默认字体,从而避免了因缺少适当字体而导致的乱码现象。此外,还需确认所选字体确实包含了所需的字符集;对于其他语言的支持同样适用此方法,只需替换相应的 TTF 文件路径即可。
相关推荐














