IPython/Jupyter Проблемы с сохранением ноутбука в формате PDF

Итак, я пытался сохранить jupyter-блокнот в формате PDF, но я просто не могу понять, как это сделать. Первое, что я пытаюсь сделать из меню файла, просто загрузить в формате PDF, но это приводит к:

nbconvert failed: PDF creating failed

Следующее, что я пытаюсь сделать, это попытаться выполнить преобразование из командной строки, как это

$ ipython nbconvert --to latex --post PDF MyNotebook.ipynb 

но опять же, это приводит к сообщению об ошибке

ImportError: No module named 'PDF'

и если я попробую

$ ipython nbconvert --to latex MyNotebook.ipynb 

это приводит к

IPython.nbconvert.utils.pandoc.PandocMissing: Pandoc wasn't found:
Please check that pandoc is installed

если я пытаюсь установить pandoc (pip install pandoc), это дает мне

ImportError: No module named 'ConfigParser'

и вот где я застреваю, потому что я просто не знаю, что еще делать. У кого-нибудь есть идея, как исправить что-то не так?

Ответ 1

Если вы находитесь на Mac и у вас установлен Homebrew, откройте оболочку терминала и установите pandoc, набрав команду:

brew установить pandoc

быть терпеливым, время для установки и компиляции может занять некоторое время на медленных интернет-соединениях или более старых системах.

Ответ 2

Чтобы он работал, я установил латекс, типичный латекс extra и pandoc.

С ubuntu:

sudo apt-get install texlive texlive-latex-extra pandoc

требуется несколько раз: несколько 100 Мб для загрузки. Я где-то читал, что вы можете использовать --no-install-recommends для texlive и extra, чтобы свести к dl.

Ответ 3

2015-4-22: похоже, что обновление IPython означает, что вместо --to latex --post PDF следует использовать --to pdf. Существует связанная с этим проблема Github.

Ответ 4

Для преобразования записных книжек в PDF сначала необходимо установить nbconvert.

pip install nbconvert
# OR
conda install nbconvert

Далее, если вы не используете Anaconda или еще не сделали этого, вы должны установить pandoc, следуя инструкциям на их веб-сайте или в Linux следующим образом:

sudo apt-get install pandoc

После этого вам необходимо установить XeTex на вашем компьютере:

Теперь вы можете перейти к папке, содержащей ваш IPython Notebook, и выполнить следующую команду:

jupyter nbconvert --to pdf MyNotebook.ipynb

для дальнейшей ссылки, пожалуйста, проверьте эту ссылку.

Ответ 5

Как говорится в комментарии к вопросу, вам понадобятся pandoc и латекс (например, TeXShop). Я установил pandoc с Homebrew, потребовалось всего секунду. Имея pandoc и TeXShop, я мог бы создавать латекс, но не pdf (в командной строке).

ipython nbconvert --to latex mynotebook.ipynb

Изучение файла латекса (.tex) с помощью TeXShop, отказ произошел из-за отсутствия таблиц стилей и defs. После установки всех этих параметров (adjustbox.sty, adjcalc.sty, trimclip.sty, collectbox.sty, tc-pgf.def, ucs.sty, uni-global.def, utf8x.def, ucsencs.def), он, наконец, работа.

Однако результат выглядит немного слишком напуганным для моего вкуса. Очень плохо, что печать html из Safari теряет синтаксическую раскраску. В противном случае это выглядит не так уж плохо. (Все это на OS X).

Ответ 6

В этом Python script есть графический интерфейс для выбора с помощью проводника Ipython Notebook, который вы хотите преобразовать в pdf. Подход с wkhtmltopdf - единственный подход, который я нашел, работает хорошо и предоставляет высококачественные pdf файлы. Другие описанные здесь подходы проблематичны, подсветка синтаксиса не работает или испорченные графики.

Вам нужно будет установить wkhtmltopdf: http://wkhtmltopdf.org/downloads.html

и Nbconvert

pip install nbconvert
# OR
conda install nbconvert

Python script

# Script adapted from CloudCray
# Original Source: https://gist.github.com/CloudCray/994dd361dece0463f64a
# 2016--06-29
# This will create both an HTML and a PDF file

import subprocess
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename

WKHTMLTOPDF_PATH = "C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf"  # or wherever you keep it

def export_to_html(filename):
    cmd = 'ipython nbconvert --to html "{0}"'
    subprocess.call(cmd.format(filename), shell=True)
    return filename.replace(".ipynb", ".html")


def convert_to_pdf(filename):
    cmd = '"{0}" "{1}" "{2}"'.format(WKHTMLTOPDF_PATH, filename, filename.replace(".html", ".pdf"))
    subprocess.call(cmd, shell=True)
    return filename.replace(".html", ".pdf")


def export_to_pdf(filename):
    fn = export_to_html(filename)
    return convert_to_pdf(fn)

def main():
    print("Export IPython notebook to PDF")
    print("    Please select a notebook:")

    Tk().withdraw() # Starts in folder from which it is started, keep the root window from appearing 
    x = askopenfilename() # show an "Open" dialog box and return the path to the selected file
    x = str(x.split("/")[-1])

    print(x)

    if not x:
        print("No notebook selected.")
        return 0
    else:
        fn = export_to_pdf(x)
        print("File exported as:\n\t{0}".format(fn))
        return 1

main()

Ответ 7

Я использую ноутбук Anaconda-Jupyter на ОС: Ubuntu 16.0 для программирования на Python.

Установите Nbconvert, Pandoc и Tex:

Откройте терминал и выполните в нем следующие команды.

Установите Nbconvert: хотя он является частью экосистемы Jupyter, установите его еще раз

$conda install nbconvert

Или же

$pip install nbconvert

Но я рекомендую использовать conda вместо pip, если вы используете anaconda

Установите Pandoc: поскольку Nbconvert использует Pandoc для преобразования уценки в форматы, отличные от HTML. Введите следующую команду

$sudo apt-get install pandoc

Установите TeX: для преобразования в PDF nbconvert использует TeX. Введите следующую команду

$sudo apt-get install texlive-xetex

После выполнения этих команд закройте открытые записные книжки, обновите домашнюю страницу или перезапустите ядро открытой записной книжки. Теперь попробуйте скачать блокнот в формате PDF :)

Примечание: для получения более подробной информации, пожалуйста, обратитесь к официальной документации:
https://nbconvert.readthedocs.io/en/latest/install.html

Ответ 8

Для преобразования любого ноутбука Jupyter в PDF, пожалуйста, следуйте приведенным ниже инструкциям:

(Быть в блокноте Jupyter):

В Mac OS:

команда + P → вы получите диалоговое окно печати → изменить место назначения в PDF → нажмите печать

В Windows:

Ctrl + P → вы получите диалоговое окно печати → изменить место назначения в PDF → нажмите печать

Если описанные выше шаги не генерируют полный PDF файл ноутбука Jupyter (возможно, из-за того, что Chrome иногда не печатает все выходные данные, потому что Jupyter делает прокрутку для больших выходных данных),

Попробуйте выполнить следующие шаги для удаления автопрокрутки в меню: -

Кредиты: @АнджелоПолотто

  1. В блокноте Jupyter нажмите " Сотовый" в верхней части блокнота Jupyter enter image description here

  2. Далее нажмите Все выходныеПереключить прокрутку для удаления автопрокрутки.

enter image description here

Ответ 9

Эта проблема возникла как с Ubuntu, так и с Mac OSX. После безумного набора поисков и испытаний они оба были решены. Для этого требуются как tex, так и pandoc; обе jumbo внешние программы не могут быть установлены Python pip.

Mac OSX: использование MacPorts для установки pandoc

port install pandoc

Это займет около часа (в обычном случае). Если проблема не устранена, возможно, вам придется установить дистрибутив MacTeX. TeXLive.

Для Ubuntu: установите vanilla TeXLive из сетевой установщик - не через apt-get. Затем установите pandoc, используя apt-get.

sudo apt-get install pandoc

Полная установка TeXLive потребует до 4,4 ГБ на диске.

Чтобы сохранить все эти проблемы, рекомендуемым способом использования IPython/Jupyter Notebook было бы установить дистрибутив Anaconda Python.

Ответ 10

Если вы используете sagemath облачную версию, вы можете просто перейти в левый угол,
выберите Файл → Загрузить как → Pdf через LaTeX (.pdf)
Проверьте скриншот, если хотите.

Снимок экрана Преобразование ipynb в pdf

Если он не работает по какой-либо причине, вы можете попробовать другой путь.
выберите" Файл "- > " Предварительный просмотр", а затем предварительный просмотр
щелкните правой кнопкой мыши → Печать, а затем выберите сохранение в формате pdf.

Ответ 11

Как новый участник, я не смог просто добавить комментарий к сообщению, но хочу сказать, что решение, предложенное Филиппом Шварцем, сработало для меня. Надеемся, что люди в подобной ситуации скорее попробуют этот путь с акцентом. Отсутствие разрывов страниц долгое время было проблемой, поэтому я благодарен за обсуждение выше.

Как сказал Филипп Шварц: "Вам нужно установить wkhtmltopdf: [ http://wkhtmltopdf.org/downloads.html][1]

и Nbconvert "

Затем вы добавляете ячейку типа "rawNBConvert" и включаете:

<p style="page-break-after:always;"></p>

Похоже, это помогло мне, и у сгенерированного PDF был разрыв страницы в соответствующих местах. Вам не нужно запускать пользовательский код, так как кажется, что "нормальный" путь загрузки записной книжки в формате HTML, открытия в браузере и печати в PDF работает после установки этих утилит.

Ответ 12

У меня были всевозможные проблемы с этим. Я не знаю, предоставит ли он именно то, что вам нужно, но я загрузил свой ноутбук в виде HTML файла, затем вытащил его в своем браузере Chrome и распечатал его как файл PDF, который я сохранил. Он захватил весь мой код, текст и графики. Это было достаточно для того, что мне было нужно.

Ответ 13

Я обнаружил, что у nbconvert/utils/pandoc.py была ошибка кода, которая привела к ошибке для моей машины. Код проверяет, находится ли pandoc в вашем пути переменных окружения. Для моей машины ответ - нет. Однако pandoc.exe есть!

Решение заключалось в том, чтобы добавить ".exe" в код в строке 69

if __version is None:
    if not which('pandoc.exe'):
        raise PandocMissing()

То же самое для "xelatex" не установлено. Добавить в файл nbconvert/exporters/pdf.py в строке 94

    cmd = which(command_list[0]+'.exe')

Ответ 14

Чтобы преобразовать .ipynb в pdf, ваша система должна содержать 2 компонента:

  1. nbconvert: Является частью jupyter позволяет конвертировать ipynb в PDF

    pip install nbconvert
    OR 
    conda install nbconvert
    
  2. XeTeX: Преобразуйте ipynb в формат .tex, а затем преобразуйте в pdf.

    sudo apt-get install texlive-xetex
    

Затем вы можете использовать команду ниже, чтобы преобразовать в PDF,

ipython nbconvert --to pdf YOURNOTEBOOK.ipynb

В случае, если это не работает, установите pandoc и попробуйте снова.

sudo apt-get install pandoc

Ответ 15

Для пользователей Ubuntu ответ можно найти здесь. Я также цитирую это:

Наиболее вероятной причиной является то, что вы не установили соответствующие зависимости. Ваша система Ubuntu должна иметь несколько пакетов установлен для преобразования файлов LaTeX и XeTeX, чтобы сохраните свой блокнот в формате PDF. Вы можете установить их:

sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended pandoc

Кроме того, nbconvert - это еще одна зависимость, которая обычно автоматически установлен с Jupyter. Но вы можете установить его, чтобы быть уверенным, пока активировать виртуальную среду:

pip install -U nbconvert