ipynb文件转PDF:从Jupyter Notebook到专业文档的完美蜕变

一、为什么需要将ipynb转换为PDF?

Jupyter Notebook(.ipynb)是数据科学家的得力助手,但有时我们需要更正式的展示形式。PDF格式通用、美观,且易于打印和分发。无论是提交作业、报告还是发表论文,将ipynb导成PDF都是必备技能。

二、官方推荐:使用nbconvert命令

Jupyter自带nbconvert工具,最直接的方法是:

jupyter nbconvert --to pdf your_notebook.ipynb

但注意,这需要系统安装LaTeX(如TeX Live或MiKTeX)。如果你没有LaTeX环境,可以尝试先转换为HTML再转PDF:

jupyter nbconvert --to html your_notebook.ipynb
# 然后用浏览器打开HTML文件,Ctrl+P打印为PDF

或者,使用--to webpdf(需要安装playwright):

pip install jupyter nbconvert[webpdf]
jupyter nbconvert --to webpdf your_notebook.ipynb

三、在线工具:无需安装,快速转换

不想折腾环境?试试 nbconvert在线版Google Colab。在Colab中,你可以用以下代码导出:

!jupyter nbconvert --to pdf your_notebook.ipynb

然后下载生成的PDF文件。

四、美化输出:自定义模板与样式

默认转换可能包含代码框和输出,有时显得杂乱。你可以创建自己的LaTeX模板,隐藏代码只显示结果,或调整字体和布局。例如,使用--template参数:

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

社区有很多现成模板,如 hidecode 模板:

pip install jupyter_contrib_nbextensions
jupyter nbconvert --to pdf --template hidecode notebook.ipynb

五、常见问题与解决

  • 中文乱码:LaTeX需配置中文支持,可使用XeLaTeX引擎:jupyter nbconvert --to pdf --pdf-engine=xelatex notebook.ipynb
  • 图表不显示:检查matplotlib是否使用了Agg后端,尝试在notebook开头添加%matplotlib inline
  • 转换时间过长:大型notebook建议先拆分,或移除不必要的输出

六、总结

ipynb转PDF并非难事,无论是命令行还是在线工具,都能满足需求。关键是选择适合你的工作流的方法,并针对输出进行美化。希望本文能帮助你高效地完成转换任务,让数据故事以优雅的PDF形式呈现。