Конвертация Jupyter Notebook в PDF: от быстрой печати до профессиональной верстки
Самый быстрый способ сохранить Jupyter Notebook (.ipynb) в PDF — использовать встроенную функцию экспорта в HTML с последующей печатью страницы в PDF через браузер. Этот метод не требует установки дополнительного ПО. Для получения документа высокого качества с корректным отображением формул и кода рекомендуется использовать утилиту nbconvert с установленным дистрибутивом LaTeX.
Выбор метода зависит от ваших целей: нужна ли вам скорость или типографское качество, а также от наличия установленных зависимостей (LaTeX, Pandoc). Ниже разобраны все актуальные способы конвертации в 2026 году.
Краткий совет: Если вам нужно отправить отчет коллеге «здесь и сейчас», используйте метод HTML → Print to PDF. Если вы готовите научную статью или диплом — настраивайте LaTeX.
Сравнение методов конвертации
Прежде чем выбирать инструмент, оцените требования к результату и доступное время на настройку окружения.
| Метод | Сложность настройки | Качество верстки | Зависимости | Лучшее применение |
|---|---|---|---|---|
| HTML → Печать в PDF | Низкая | Среднее | Браузер | Быстрые отчеты, черновики |
| nbconvert + LaTeX | Высокая | Отличное | TeX Live/MiKTeX, Pandoc | Научные работы, публикации |
| VS Code / JupyterLab | Средняя | Хорошее | Расширения IDE | Повседневная работа разработчика |
| Онлайн-конвертеры | Низкая | Варьируется | Интернет | Разовые задачи без чувствительных данных |
Способ 1: Экспорт через HTML (без установки LaTeX)
Этот метод работает на любой операционной системе и не требует сложной настройки окружения. Он идеален, если вам нужно быстро получить читаемый документ.
Пошаговая инструкция
- Конвертация в HTML: Откройте терминал в папке с ноутбуком и выполните команду:
jupyter nbconvert --to html my_notebook.ipynb
```
Или используйте меню в интерфейсе Jupyter: `File` → `Download as` → `HTML (.html)`.
2. **Сохранение в PDF:**
* Откройте полученный `.html` файл в любом современном браузере (Chrome, Firefox, Edge).
* Нажмите `Ctrl + P` (или `Cmd + P` на macOS).
* В пункте «Принтер» выберите **«Сохранить как PDF»** (Save as PDF).
* **Важно:** В дополнительных настройках печати включите опцию **«Фоновая графика»** (Background graphics), чтобы сохранились цвета ячеек кода и графики.
Чтобы убрать лишние элементы интерфейса при печати, убедитесь, что вы открыли именно экспортированный HTML-файл, а не сам ноутбук в браузере. Интерфейс Jupyter содержит много служебных кнопок, которые попадут в PDF при прямой печати страницы.
Способ 2: Профессиональная конвертация через LaTeX
Использование LaTeX обеспечивает наилучшее качество типографики, корректное отображение математических формул и переносов строк в коде. Это стандарт для академических работ.
Требования
Для работы этого метода в системе должны быть установлены:
- LaTeX дистрибутив: TeX Live (Linux/macOS) или MiKTeX (Windows).
- Pandoc: Универсальный конвертер документов.
- nbconvert: Обычно идет в комплекте с Jupyter, но лучше обновить:
pip install nbconvert.
Инструкция
- Убедитесь, что LaTeX доступен в системной переменной PATH. Проверить можно командой
latex --version. - Выполните конвертацию одной командой:
jupyter nbconvert --to pdf my_notebook.ipynb
```
3. Если процесс завершился успешно, файл `my_notebook.pdf` появится в той же директории.
### Решение частых ошибок LaTeX
* **Ошибка «Latex failed to resolve...»:** Чаще всего не хватает конкретных пакетов. Установите полный дистрибутив TeX, а не базовый набор.
* **Проблемы с кириллицей:** Убедитесь, что в ноутбуке используется кодировка UTF-8. В некоторых случаях требуется добавить заголовок LaTeX в метаданные ноутбука или использовать шаблон с поддержкой `xelatex`.
* **Обрезанные графики:** Увеличьте размер фигуры в коде перед построением графика:
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6)) # Увеличиваем размер
plt.plot(data)
plt.show()
```
## Способ 3: Использование VS Code или JupyterLab
Современные среды разработки имеют встроенные инструменты экспорта, которые часто работают стабильнее, чем командная строка, благодаря визуализации процесса.
### В Visual Studio Code
1. Откройте `.ipynb` файл в VS Code.
2. Нажмите правой кнопкой мыши в области редактора или откройте палитру команд (`Ctrl+Shift+P`).
3. Введите `Jupyter: Export to PDF`.
4. Если LaTeX не установлен, VS Code может предложить экспортировать через HTML или Markdown. Выберите подходящий вариант.
### В JupyterLab
1. Откройте ноутбук.
2. Перейдите в `File` → `Save and Export Notebook As...`.
3. Выберите `PDF`.
4. JupyterLab попытается использовать установленный в системе LaTeX. Если его нет, он предложит скачать необходимый образ Docker или использовать альтернативный метод (если настроено администратором сервера).
## Способ 4: Онлайн-сервисы (для разовых задач)
Существуют веб-сервисы (например, CloudConvert, Zamzar), позволяющие загрузить `.ipynb` и получить `.pdf`.
Безопасность данных: Никогда не загружайте в онлайн-конвертеры ноутбуки, содержащие персональные данные, пароли, API-ключи или коммерческую тайну. Файл остается на чужом сервере, и вы не можете гарантировать его удаление.
Этот способ подходит только для учебных материалов, открытых данных или пустых шаблонов.
Частые ошибки и их устранение
Даже при правильной настройке конвертация может пройти неидеально. Вот как исправить популярные проблемы:
- Графики обрезаются или наезжают на текст.
- Решение: Используйте
plt.tight_layout()передplt.show()в matplotlib. Это автоматически подкорректирует отступы.
- Решение: Используйте
- Длинный код не переносится и уходит за край страницы.
- Решение: В LaTeX-шаблонах это решается настройкой пакета
listingsилиminted. При методе HTML→PDF попробуйте уменьшить масштаб шрифта в настройках печати браузера (например, до 90%).
- Решение: В LaTeX-шаблонах это решается настройкой пакета
- Отсутствуют изображения.
- Решение: Убедитесь, что пути к изображениям относительные и файлы лежат в той же папке, что и ноутбук, либо что изображения сохранены внутри
.ipynbфайла (base64), а не ссылками на внешние ресурсы.
- Решение: Убедитесь, что пути к изображениям относительные и файлы лежат в той же папке, что и ноутбук, либо что изображения сохранены внутри
- Ошибка «No module named nbconvert».
- Решение: Установите пакет явно:
pip install nbconvert[webpdf]илиpip install nbconvert[pdf].
- Решение: Установите пакет явно:
FAQ
Можно ли конвертировать только одну ячейку в PDF? Напрямую — нет. Но вы можете скопировать содержимое ячейки (код или markdown) в отдельный временный ноутбук, скрыть остальные ячейки (Right click → Hide Cell) и экспортировать весь файл.
Почему PDF выглядит иначе, чем ноутбук в браузере? Браузер и LaTeX используют разные движки рендеринга. Шрифты, отступы и цветовые схемы будут отличаться. Для идентичности используйте метод HTML→PDF, так как браузер рендерит оба формата одинаково.
Как сделать оглавление в PDF?
При использовании LaTeX (nbconvert --to pdf) оглавление генерируется автоматически на основе заголовков Markdown (#, ##, ###). При методе HTML→PDF оглавление придется создавать вручную или использовать расширения браузера для печати структуры.
Что делать, если файл PDF весит слишком много? Большей частью объем создают графики. Сохраняйте графики в векторном формате (SVG/PDF) внутри ноутбука, если это возможно, или уменьшайте их DPI при сохранении в PNG. При экспорте через HTML→PDF можно снизить качество изображений в настройках печати.