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

如何在将Jupyter Notebook保存为PDF时保留pandas DataFrame的背景色?

这个问题我之前踩过好几次坑!不管是直接从Jupyter Notebook导出PDF,还是转成HTML再打印,默认的打印规则都会自动忽略背景色——浏览器为了节省墨水,默认关闭了背景图形的打印权限。下面给你几个亲测有效的解决办法:

方法1:调整浏览器打印设置(HTML转PDF必备)

当你把Notebook导出成HTML文件后,别着急直接打印,先改个设置:

  • 打开HTML文件,按下Ctrl+P(Windows)或Cmd+P(Mac)调出打印界面
  • 找到「更多设置」(不同浏览器位置可能不同,Chrome在打印界面底部,Firefox在「选项」里)
  • 勾选背景图形(Chrome的叫法)或者打印背景(Firefox的叫法)
  • 最后选择「保存为PDF」,这时候DataFrame的背景色就会完整保留了
方法2:给Notebook加自定义CSS(直接导出PDF)

如果不想每次转HTML都调设置,可以在Notebook里注入一段CSS,强制打印时渲染背景色:

  1. 新建一个代码单元格,粘贴以下代码并运行:
from IPython.core.display import HTML
HTML("""
<style>
@media print {
    table.dataframe {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
        background-color: inherit !important;
    }
    table.dataframe td, table.dataframe th {
        background-color: inherit !important;
    }
}
</style>
""")
  1. 这段代码里的-webkit-print-color-adjust: exact和print-color-adjust: exact是核心,它们会告诉打印引擎必须精确渲染所有颜色,包括背景。
  2. 之后直接用Notebook的「文件」→「下载为」→「PDF via HTML」导出就行(别用LaTeX方式,它对CSS样式支持很差)
方法3:用Pandas Styler精准控制样式导出

如果你的DataFrame是用pandas.Styler设置的自定义背景(比如渐变色、条件格式),可以直接导出成带完整样式的HTML,再转PDF:

  • 先导出带样式的HTML文件:
# 假设df是你的原始DataFrame,这里用背景渐变举例
styled_df = df.style.background_gradient(cmap='Blues')
styled_df.to_file('styled_dataframe.html')
  • 然后按照方法1的步骤,打开这个HTML文件调整打印设置后保存为PDF,样式会100%还原

提醒一下:尽量避开「PDF via LaTeX」的导出方式,LaTeX对Pandas DataFrame的样式支持非常有限,大概率会丢失背景色和其他自定义样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:08