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

Plotly导出PDF时字体样式改变,如何保留自定义设置的字体?

Plotly导出PDF时丢失指定字体的解决方案

问题描述

使用Plotly创建可视化图表时,Jupyter Notebook内的字体显示符合预期,但导出为PDF文件后设定的字体样式丢失,自动切换为系统默认字体。
示例代码:

import plotly.graph_objects as go
import plotly.io as pio

fig = go.Figure()
fig.update_layout(
    title="As you can see the font changes, how can I keep the font?",
    font_family = "Latin Modern Roman"
)

fig.show()
pio.write_image(fig, "test.pdf")

Jupyter内显示效果:
Jupyter内显示效果
导出PDF后的效果:
PDF导出效果

原因

Plotly 导出静态PDF依赖的Kaleido(新版默认)/Orca(旧版默认)引擎默认不会嵌入自定义字体,会自动 fallback 到系统默认字体,导致和浏览器端渲染效果不一致。

解决步骤

  1. 确认指定字体已全局安装,且填写的字体名称和系统识别的正式名称完全一致:
    • Windows:控制面板→字体中查看字体正式名称
    • macOS:字体册中查看字体正式名称
    • Linux:执行fc-list命令查看已安装字体列表
  2. 修改导出代码,开启字体嵌入配置:
    import plotly.graph_objects as go
    import plotly.io as pio
    
    fig = go.Figure()
    fig.update_layout(
        title="As you can see the font changes, how can I keep the font?",
        font_family = "Latin Modern Roman"
    )
    
    fig.show()
    pio.write_image(
        fig, 
        "test.pdf",
        engine="kaleido", # 旧版使用Orca的话替换为"orca"
        embed_fonts=True # 核心参数:开启字体嵌入
    )
    
  3. 备选方案:如果上述配置不生效,可以先导出为SVG格式,再用Inkscape、Adobe Illustrator等矢量工具打开后导出为PDF,这类工具会自动识别并嵌入用到的字体,效果和Jupyter内完全一致:
    pio.write_image(fig, "test.svg", engine="kaleido")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:45:03