Конвертация Jupyter Notebook в PDF: от быстрой печати до профессиональной верстки

Иван Корнев·27.05.2026·5 мин

Самый быстрый способ сохранить 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)

Этот метод работает на любой операционной системе и не требует сложной настройки окружения. Он идеален, если вам нужно быстро получить читаемый документ.

Пошаговая инструкция

  1. Конвертация в 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.

Инструкция

  1. Убедитесь, что LaTeX доступен в системной переменной PATH. Проверить можно командой latex --version.
  2. Выполните конвертацию одной командой:
    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-ключи или коммерческую тайну. Файл остается на чужом сервере, и вы не можете гарантировать его удаление.

Этот способ подходит только для учебных материалов, открытых данных или пустых шаблонов.

Частые ошибки и их устранение

Даже при правильной настройке конвертация может пройти неидеально. Вот как исправить популярные проблемы:

  1. Графики обрезаются или наезжают на текст.
    • Решение: Используйте plt.tight_layout() перед plt.show() в matplotlib. Это автоматически подкорректирует отступы.
  2. Длинный код не переносится и уходит за край страницы.
    • Решение: В LaTeX-шаблонах это решается настройкой пакета listings или minted. При методе HTML→PDF попробуйте уменьшить масштаб шрифта в настройках печати браузера (например, до 90%).
  3. Отсутствуют изображения.
    • Решение: Убедитесь, что пути к изображениям относительные и файлы лежат в той же папке, что и ноутбук, либо что изображения сохранены внутри .ipynb файла (base64), а не ссылками на внешние ресурсы.
  4. Ошибка «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 можно снизить качество изображений в настройках печати.