将Jupyter Notebook (ipynb) 转换为 PDF 文件的完整指南

将Jupyter Notebook (ipynb) 转换为 PDF 文件的完整指南

Jupyter Notebook 是数据科学家和研究人员最爱的工具之一,但共享或打印时往往需要 .pdf 格式。本文会带你了解几种靠谱的转换方式,从零基础到进阶技巧,让你轻松搞定。

方法一:使用 nbconvert 命令行(最常用)

nbconvert 是 Jupyter 自带的导出工具,可以直接在终端运行。

基本命令

jupyter nbconvert --to pdf your_notebook.ipynb

这个命令会尝试用 LaTeX 引擎编译(需要安装 Pandoc 和 LaTeX 发行版,如 TeX Live 或 MiKTeX)。如果缺环境,会报错,得先装好。

安装依赖(以 Ubuntu 为例)

sudo apt-get install texlive-xetex texlive-fonts-recommended texlive-plain-generic pandoc

在 macOS 上可以用 brew install pandoc 然后安装 MacTeX。Windows 用户推荐安装 MiKTeX 并添加环境变量。

方法二:使用 --to webpdf(无需 LaTeX)

如果不想碰 LaTeX,可以尝试 webpdf 方式:

jupyter nbconvert --to webpdf --allow-chromium-download your_notebook.ipynb

这需要 Chromium 或 Google Chrome。首次运行会自动下载 Chromium,之后渲染成 PDF 效果很好,代码和图表不会乱。

方法三:在线转换(零安装)

如果只是偶尔转换,可以用 Google Colab 或 nbviewer 加浏览器打印功能:

  1. 将 ipynb 上传到 nbviewer 或 GitHub,通过 URL 打开。
  2. 在浏览器中按 Ctrl+P 或 Cmd+P,选择“另存为 PDF”。
  3. 注意:代码块可能会被分页截断,建议调整边距或使用“打印背景图”选项。

高级技巧:自定义模板与样式

如果想精细控制 PDF 布局,可以创建自定义 LaTeX 模板或使用 jupyter-contrib-nbextensions 的“nbconvert 导出器”。例如:

jupyter nbconvert --to pdf --template mytemplate.tplx notebook.ipynb

模板文件中可以修改字体、页眉页脚、目录等。

常见问题与解决

  • 数学公式乱码:确保 LaTeX 安装完整,或改用 --to webpdf。
  • 中文支持:在模板中添加 \usepackage{ctex} 或使用 XeLaTeX 引擎。
  • 图片缺失:检查单元格输出中的图片是否以 base64 内嵌,或者调整为本地路径。

总结

以上方法各有利弊:nbconvert+LaTeX 最灵活但配置复杂;webpdf 简单但较慢;在线法最省心但功能有限。推荐日常使用 webpdf,正式出版可用 LaTeX 模板。希望这篇文章能帮你顺利搞定 ipynb 转 PDF!