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]

📌 注意:这一步会安装:

  • nbconvert
  • pyppeteer(用于启动 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 方式
posted @ 2025-07-07 14:16  飞雪如歌  阅读(546)  评论(0)    收藏  举报