如何将 Jupyter Notebook (ipynb) 文件转换为 PDF

简介

Jupyter Notebook(.ipynb)是数据科学和机器学习领域广泛使用的交互式文档格式。然而,在分享报告、提交作业或发布正式文档时,PDF 格式因其通用性和可打印性成为首选。本文将手把手教你如何将 .ipynb 文件转换为高质量的 PDF。

方法一:使用 nbconvert 命令行

nbconvert 是 Jupyter 自带的一个转换工具,支持多种输出格式。要转换为 PDF,需要安装 LaTeX 引擎(如 TeX Live 或 MiKTeX)。步骤如下:

  1. 安装nbconvert(通常随Jupyter一起安装)和LaTeX:
    pip install nbconvert
    Windows 推荐安装 MiKTeX,macOS/Linux 推荐 TeX Live。
  2. 在终端中运行:
    jupyter nbconvert --to pdf your_notebook.ipynb
  3. 如果遇到中文乱码,需修改模板或安装中文字体,例如:
    jupyter nbconvert --to pdf --LatexEngine pdflatex --TemplateExporter.extra_template=classic your_notebook.ipynb

优点:高度自定义,适合批量处理。缺点:需要安装 LaTeX,体积较大。

方法二:通过 Jupyter Notebook 界面导出

无需命令行,直接在浏览器中操作:

  1. 打开你的 .ipynb 文件。
  2. 点击菜单栏 FileDownload asPDF via LaTeX
  3. 系统会自动调用 nbconvert 并生成 PDF 下载。

如果选项为灰色,可能需要安装 pandoctexlive-xetex。此外,也可以选择 PDF via HTML(先转 HTML 再打印为 PDF),这种方法不需要 LaTeX,但格式可能略有偏差。

方法三:使用在线转换工具

不想安装任何软件?试试在线服务:

  • NBViewer:将 ipynb 网址粘贴到 nbviewer,然后通过浏览器打印为 PDF。
  • Google Colab:上传 ipynb 到 Colab,然后 File → Print 并选择“另存为 PDF”。
  • Convertio 等第三方网站:直接上传文件,但注意隐私问题。

常见问题与解决方法

1. 中文显示为方块

确保系统安装了中文字体(如宋体、黑体)。在 LaTeX 模板中添加:\usepackage[UTF8]{ctex}。或者使用 XeLaTeX 引擎:
jupyter nbconvert --to pdf --LatexEngine xelatex your_notebook.ipynb

2. 图形或图像丢失

检查单元格中是否使用了 matplotlibplt.show(),或者确保图形已保存为附件。建议使用 %matplotlib inline 以保证输出内嵌。

3. 页面布局混乱

可通过自定义 LaTeX 模板调整边距、字体大小等。nbconvert 支持 --template 参数。

总结

将 ipynb 转换为 PDF 的核心是利用 LaTeX 或 HTML 打印。对于日常使用,推荐方法二(界面导出),简单快捷;需要批量处理时用法一;无环境则用在线工具。遇到格式问题时,检查字体和引擎是关键。希望本文能帮你顺利产出精美的 PDF 报告!