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

使用ReportLab生成的PDF在Adobe Illustrator中中文乱码求助

解决ReportLab生成PDF在Adobe Illustrator中中文乱码问题

问题核心在于:你的代码仅注册了SimSun字体,但未启用字体嵌入。浏览器可调用系统本地的SimSun字体渲染文本,而Adobe Illustrator严格依赖PDF文件内部嵌入的字体数据,缺失对应字体信息就会出现乱码。

修正方案

在注册TTFont时添加embed=True参数,强制ReportLab将字体数据嵌入PDF中;若需要完整嵌入字体而非仅文档用到的字符子集,可额外添加subset=False参数(默认是子集嵌入,多数场景下子集已足够)。

修正后的代码:

from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

# 注册字体并启用嵌入,subset=False可选,用于完整嵌入字体
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf', embed=True, subset=False))

c = canvas.Canvas('output.pdf')
c.setFont('SimSun', 12)
c.drawString(100, 100, '水果超级大卖场') 
c.save()

补充说明

  • embed=True:确保字体的字形数据被写入PDF,让Adobe Illustrator无需依赖系统字体即可渲染文本。
  • subset=False:默认情况下ReportLab会只嵌入文档中用到的字符子集,若你后续需要在AI中编辑文本(添加更多同字体字符),建议开启完整嵌入;仅需查看或现有字符编辑时,子集嵌入更节省PDF体积。

内容的提问来源于stack exchange,提问作者kong xie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:27:05