Jupyter Notebook如何导出为PDF或其他格式?

Jupyter Notebook 是数据分析常用的工具。它最大的特点是可以在同一个文件中同时保存 Python 代码、运行结果、数学公式、图表以及 Markdown 文字说明。但 .ipynb 文件本身并不特别适合直接分享,vscode用户在导出为PDF或其他格式时经常遇阻。对此,本文介绍几种比较实用的方案。

一、直接通过 Jupyter Notebook 导出 PDF

如果使用的是Jupyter Notebook,可以使用自带的导出功能。不过这种方式依赖 LaTeX,Jupyter 会把 Notebook 转换成 LaTeX,再生成 PDF。

操作步骤

打开需要转换的 Jupyter Notebook,在菜单中依次选择: File→ Download as / Save and Export Notebook As→ PDF
系统随后会调用 LaTeX,将当前 Notebook 转换为 PDF。如果电脑没有安装 LaTeX,或者缺少相应的 LaTeX package,导出过程中就可能出现错误。

二、使用 nbconvert 直接转换为 PDF

使用vscode或者其他IDE的用户,可以在终端中使用nbconvert 命令,可转换的文件格式不仅有PDF,还包括HTML、Markdown等。

第一步:安装 nbconvert

如果没有安装,可以运行:
如果使用 Conda,也可以:
值得注意的是,电脑必须安装 pandoc

第二步:打开终端

进入.ipynb所在目录,在空白处右键点击在终端中打开

第三步:运行转换命令

运行jupyter nbconvert --to pdf [文件名].ipynb
官方文档给出的基本语法也是:
其中 FORMAT 替换为希望导出的格式即可。

注意

  1. -to pdf 默认通过 LaTeX 生成 PDF,因此仍然需要本地存在相应的 TeX 环境
  1. 上述生成的PDF对长代码换行显示并不友好,只适合简单短代码

三、先转换成 HTML,再打印为 PDF

如果不想折腾 LaTeX,可以把 Notebook先转换成 HTML,再利用浏览器打印成 PDF。相比直接通过 LaTeX 生成 PDF,这种方法通常更加稳定。

第一步:把 Notebook 转成 HTML

打开终端,进入 .ipynb 所在目录,然后运行jupyter nbconvert --to html [文件名].ipynb,转换完成会生成[文件名].html,其中代码、Markdown、运行结果以及大部分图表都可以比较完整地保留下来。

第二步:打印为 PDF

以 Chrome 或 Edge 为例,按Ctrl + P然后选择Save as PDF即可。

四、特别推荐的方法:WebPDF

WebPDF 的逻辑更接近Notebook→ HTML→ Chromium→ PDF,因此可以在一定程度上避开复杂的 LaTeX 环境。对于代码、表格和图形较多的 Notebook,这个方案比 LaTeX PDF 更省心也更友好。
在终端中输入:

五、最推荐哪种?

对于很多 Notebook 来说,里面可能包含:
  • 很宽的 DataFrame;
  • matplotlib 图片;
  • HTML 输出;
  • 中文字符;
  • 很长的代码;
  • 特殊 Unicode 字符
如果直接经由 LaTeX 转换为PDF,很容易产生换行截断,难以阅读。个人更建议将ipynb文件直接转为HTML或者经过webpdf命令转为PDF。

参考资料

Prev
机器学习二分类评价指标与两类错误
Next
CSR范围一致性 & 重点差异化 (CSR Scope Conformity & Emphasis Differentiation)
Loading...
Article List
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
读懂专利
Stata应用技巧
Python知识与技巧
回归系数的经济意义
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验
基于专利计算的创新指标