ipynb 转为 PDF
ipynb 转为 PDF
✅ 什么是 webpdf 模式?
Jupyter 的 nbconvert 从 v7 开始新增了 webpdf 格式,可以不依赖 LaTeX,而是通过无头浏览器(headless Chromium)来将 .ipynb 转为 PDF。
核心原理:
- 把
.ipynb转换为 HTML - 用浏览器渲染 HTML 并通过 “打印为 PDF” 功能导出 PDF
- 适合不想安装庞大的 LaTeX 的用户
✅ 优点
| 特点 | 描述 |
|---|---|
| ❌ 无需 LaTeX | 不需要安装 xelatex、MiKTeX、TeX Live 等 |
| ✅ 自动下载 Chromium | 第一次执行会自动下载 Chrome 内核(不会影响你原有 Chrome) |
| 📄 保留页面格式 | 格式更接近你在浏览器里看到的效果 |
| ✅ 跨平台支持 | Windows / macOS / Linux 通用 |
🧰 环境准备
你需要安装:
- Jupyter Notebook 或 JupyterLab
- nbconvert(需 7.0+)
- webpdf 模块支持
🛠 安装步骤(只需一次)
1️⃣ 安装 nbconvert(推荐最新版)
pip install --upgrade nbconvert
2️⃣ 安装 webpdf 支持(含浏览器渲染)
pip install nbconvert[webpdf]
📌 注意:这一步会安装:
nbconvertpyppeteer(用于启动 Chromium)
🚀 执行命令:将 .ipynb 转为 PDF
jupyter nbconvert your_notebook.ipynb --to webpdf --allow-chromium-download
--allow-chromium-download:首次执行时会自动下载 Chromium 浏览器(不会影响你本地浏览器)- 生成文件为:
your_notebook.webpdf(你可以手动改扩展名为.pdf)
🧪 示例
假设你有个 demo.ipynb 文件,运行:
jupyter nbconvert demo.ipynb --to webpdf --allow-chromium-download
输出类似:
[NbConvertApp] Converting notebook demo.ipynb to webpdf
[WebPDFExporter] Chromium was not found, downloading...
[WebPDFExporter] Chromium downloaded to ~/.cache/pyppeteer
[NbConvertApp] Writing 123456 bytes to demo.webpdf
执行完毕后,会在同一目录生成 demo.webpdf 文件。
🧯 常见问题处理
❶ Chromium 下载失败
解决:
jupyter nbconvert demo.ipynb --to webpdf --allow-chromium-download
确保网络可访问 Google CDN 或设置代理。
如失败,可手动下载 Chromium 并设置路径。
❷ 输出为 .webpdf 不是 .pdf
这只是扩展名问题,你可以:
mv demo.webpdf demo.pdf
或者执行时显式指定输出文件名:
jupyter nbconvert demo.ipynb --to webpdf --output demo.pdf --allow-chromium-download
❸ 如何设置页面方向或页边距?
目前 webpdf 模式使用浏览器默认的“打印”布局,暂不支持自定义页边距。如需更高排版控制,仍需使用 --to pdf + LaTeX。
✅ 总结
| 项目 | 内容 |
|---|---|
| 命令 | jupyter nbconvert your.ipynb --to webpdf --allow-chromium-download |
| 输出 | .webpdf(可重命名为 .pdf) |
| 依赖 | nbconvert[webpdf]、pyppeteer(首次自动下载 Chromium) |
| 优势 | 快速、免 LaTeX、格式漂亮、适合初学者 |
| 不足 | 排版可控性弱于 LaTeX 方式 |
浙公网安备 33010602011771号