如何将Colab中的ipynb文件导出为带书签的PDF/EPUB?
解决方法:导出带Markdown标题书签的PDF/EPUB
我完全懂你的痛点——默认jupyter nbconvert导出的PDF经常排版混乱,还丢失标题对应的书签。下面是几个亲测有效的方法,帮你导出带有h1/h2层级书签的规范文档:
方法1:优化Jupyter nbconvert的导出参数
如果坚持用本地nbconvert工具,调整参数和模板就能解决问题:
- 首先确保本地安装了LaTeX环境(比如TeX Live或MikTeX),这是nbconvert生成PDF的基础;同时更新nbconvert到最新版本:
pip install --upgrade nbconvert - 使用官方的
report模板,它会自动把Markdown的h1、h2映射为LaTeX的章节/小节,进而生成PDF书签:jupyter nbconvert --to pdf --template report your_notebook.ipynb - 如果遇到中文排版乱码,添加指定XeLaTeX引擎的参数(XeLaTeX对中文支持更好):
jupyter nbconvert --to pdf --template report --PDFExporter.latex_command="xelatex -interaction=nonstopmode" your_notebook.ipynb - 注意:确保你的Markdown标题格式标准(
# 标题内容,#和文字之间有空格),避免特殊符号干扰识别。
方法2:直接在Google Colab中用打印功能导出(最省心)
Colab的原生显示排版已经很规整,用Chrome的打印功能导出能完美保留标题书签:
- 在Colab中确认所有h1/h2标题格式正确,调整好代码块、文本的排版
- 点击浏览器右上角的「打印」按钮(或按
Ctrl+P),在打印预览面板中:- 选择「目标打印机」为「另存为PDF」
- 打开「更多设置」,调整纸张尺寸(比如A4)、边距为合适值,勾选「背景图形」(如果需要保留Colab的样式)
- 切换到预览面板的「书签」标签,你会看到自动识别的h1/h2层级书签,确认后点击「保存」即可
方法3:导出EPUB(及转PDF)
如果需要EPUB格式,或者想通过EPUB转PDF保留书签,可以用pandoc工具:
- 在Colab中把笔记本导出为Markdown文件:「文件」→「下载」→「下载为Markdown」
- 用pandoc将Markdown转为EPUB(自动生成层级书签):
pandoc -s your_notebook.md -o your_notebook.epub - 如果需要从EPUB转PDF,继续用pandoc,或者用Calibre这类EPUB阅读器导出,都能保留书签结构:
pandoc your_notebook.epub -o your_notebook.pdf
注意事项
- 标题层级要清晰:避免出现无h1前置的h2,这样书签的层级结构会更规整
- 若有特殊格式(比如公式、图片),优先用Colab打印或pandoc方法,比nbconvert的兼容性更好
内容的提问来源于stack exchange,提问作者Pythoner




