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 делает прокрутку для больших выходных данных),
Попробуйте выполнить следующие шаги для удаления автопрокрутки в меню: -
Кредиты: @АнджелоПолотто
-
В блокноте Jupyter нажмите " Сотовый" в верхней части блокнота Jupyter ![enter image description here]()
-
Далее нажмите Все выходные → Переключить прокрутку для удаления автопрокрутки.
![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 компонента:
nbconvert:
Является частью jupyter позволяет конвертировать ipynb в PDF
pip install nbconvert
OR
conda install nbconvert
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