---
title: "Jupyter Notebook（.ipynb）转扫描版 PDF：不用 nbconvert，也不用装 LaTeX"
description: "Look Scanned 现在可以打开 Jupyter Notebook 了。选好 .ipynb 文件，在预览里检查代码、输出和图表，再保存一份像打印后扫描出来的 PDF。"
date: 2026-10-08T01:00:00.000Z
lang: zh-CN
source: https://lookscanned.io/zh-CN/blog/ipynb-to-scanned-pdf
tags: ["Jupyter", "PDF", "产品更新"]
---

# Jupyter Notebook（.ipynb）转扫描版 PDF：不用 nbconvert，也不用装 LaTeX

作业在 Jupyter 里写完了，提交系统却只收 PDF。你点了“下载为 PDF”，或者运行 `jupyter nbconvert --to pdf`，结果报错：找不到 `xelatex`，或者缺少 pandoc。nbconvert 是通过 LaTeX 生成 PDF 的，所以得先装好一整套 TeX 发行版，它才能导出任何东西。

Look Scanned 现在可以直接打开 `.ipynb` 文件了。在 [Jupyter Notebook 转扫描版 PDF](https://lookscanned.io/zh-CN/scan/ipynb) 页面选好你的 Notebook，它会直接在浏览器里排版：Markdown 单元格、代码，以及随文件保存的输出。在预览里检查一遍页面，就能下载 PDF。不用安装任何东西，Notebook 也不会上传。

先说清楚一点：Look Scanned 做的是让文档看起来像扫描件，所以生成的 PDF 也是扫描件的样子。如果你的 Notebook 需要以“打印后扫描”的形式提交，或者就是想让它看起来像纸质材料，这正合适。你可以把旋转、模糊和噪点都调到零，让页面更干净，但每一页仍然是图片，所以 PDF 里的文字不能选中，也不能搜索。

## 怎么把 .ipynb 文件转成扫描版 PDF？

1. 在 Jupyter、JupyterLab、VS Code 或 Google Colab 里运行 Notebook 并保存，让输出存进文件里。在 Colab 里，用“文件 → 下载 → 下载 .ipynb”。
2. 打开 [Jupyter Notebook 转扫描版 PDF](https://lookscanned.io/zh-CN/scan/ipynb)，选择 `.ipynb` 文件。
3. 逐页看一下预览，检查代码、表格和图表，再设置纸张大小和页边距。
4. 调整扫描效果。把模糊和噪点调低一些，小字号的代码才看得清。页面默认是灰度的，想保留图表的颜色就选“彩色”。
5. 生成扫描版 PDF 并下载。

如果需要图片，也可以把每一页导出成 JPG 或 PNG。具体怎么选，可以看看[扫描件的 PDF、JPG 和 PNG 格式区别](https://lookscanned.io/zh-CN/blog/scanned-document-pdf-jpg-png)。开通专业版后，用[批量扫描](https://lookscanned.io/zh-CN/scan/bulk)可以一次处理好几个 `.ipynb` 文件。

## 页面上会出现什么？

- **Markdown 单元格**：标题、列表、表格、链接和图片，包括直接粘贴进单元格的图片。
- **代码单元格**：按 Notebook 的编程语言做语法高亮，并标上 `In [1]:` 提示符。过长的代码行会自动换行，不会超出页面。
- **已保存的输出**，标在 `Out[1]:` 提示符下：打印的文字、返回值、pandas DataFrame 这类 HTML 表格，还有图片，所以 matplotlib 或 seaborn 画的图都能显示。
- **报错信息**，连同完整的 traceback。
- **终端输出按终端里看到的样子显示**。颜色控制码会被去掉，tqdm 这类进度条只保留最后的状态，不会把每次刷新都列出来。

## 开始之前，先了解这几点

- **单元格不会被运行**。Look Scanned 只读取文件里保存的内容，没有内核。没运行过的单元格，或者清空了输出再保存的 Notebook，只会显示代码，下面什么都没有。请先运行全部单元格并保存，再选择文件。
- **公式保持 TeX 源码**。Markdown 单元格里用 `$…$` 或 `$$…$$` 写的公式会原样显示，比如 `$\alpha + \beta$`，不会排成数学公式。
- **交互式输出不会显示**。Plotly、Bokeh 和 ipywidgets 都靠 JavaScript 绘制，而 JavaScript 不会运行。你看到的是 Notebook 一并保存的静态版本，往往只有一行简短的文字，甚至什么都没有。像 matplotlib 那样保存成图片的图表则没有问题。
- **Notebook 必须是 nbformat 4**。现在的 Jupyter、JupyterLab、VS Code 和 Colab 保存的都是这个版本。很老的 nbformat 3 Notebook 会被拒绝，用新版 Jupyter 打开再保存一次就能升级。
- **宽表格会被压窄**。表格会缩放到页面宽度，所以列很多的 DataFrame 每一列都会变窄、自动换行。
- **请保留原来的 Notebook**。和真正的扫描件一样，PDF 由页面图片组成。要运行或修改代码，还得用 `.ipynb` 文件。

Notebook 的读取和排版都在你自己的设备上完成，不会上传到服务器。唯一的例外是 Markdown 单元格里用网址引用的图片：你的浏览器会从存放它的网站下载这张图片，在 Jupyter 里打开时也是这样。

## 什么时候更适合用 nbconvert？

如果你需要能选中的文字、排好版的公式，或者和 Jupyter 自带导出一模一样的 PDF，nbconvert 仍然是正确的选择。装好 TeX 发行版后运行 `jupyter nbconvert --to pdf`，或者改用 `--to webpdf`，它通过无头 Chromium 浏览器打印，完全绕开 LaTeX。无论哪种方式，之后都可以把这个 PDF 放进 Look Scanned 添加扫描效果。

你的报告是 Markdown 或 LaTeX 文件，而不是 Notebook？这些也能打开：请看 [Markdown 和 HTML 转扫描版 PDF](https://lookscanned.io/zh-CN/blog/html-markdown-to-scanned-pdf) 和 [LaTeX 转扫描版 PDF](https://lookscanned.io/zh-CN/blog/latex-to-scanned-pdf)。

手上有需要交 PDF 的 Notebook？[现在就试试](https://lookscanned.io/zh-CN/scan/ipynb)。
