Экспорт ноутбука в pdf без кода

У меня большой ноутбук с большим количеством цифр и текста. Я хочу преобразовать его в html файл. Однако я не хочу экспортировать код. Я использую следующую команду

ipython nbconvert --to html notebook.ipynb

Но этот параметр также экспортирует код. Есть ли способ конвертировать ноутбук в html без кода?

Ответ 1

I found эта статья показалась мне интересной, она объясняет, как удалить входные столбцы:

вам просто нужно создать файл шаблона с именем "hidecode.tplx" в том же каталоге, что и блокнот, который вы хотите преобразовать, и добавить в него строку:

    ((*- extends 'article.tplx' -*))

((* block input_group *))
    ((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
        ((( super() )))
    ((*- endif -*))
((* endblock input_group *))

И после запуска этой команды она будет использовать pdfLatex для преобразования записной книжки в pdf через латекс:

jupyter nbconvert --to pdf --template hidecode Example.ipynb

или, если вы хотите редактировать, вы можете преобразовать его в документ .tex и использовать pdfLatex, чтобы поместить его в pdf:

jupyter nbconvert --to latex --template hidecode Example.ipynb

ОБНОВЛЕНИЕ сентябрь 2018 года: ipython nbconvert устарела. Он будет заменен на jupyter nbconvert: поэтому мы заменим команду ipython на jupyter

Ответ 2

Я искал тот же вопрос в SO и, наконец, оказался очень простым способом:

Предполагая использование Firefox (57) + Win7

  1. Запустите блокнот Jupyter и загрузите блокнот в браузер: File-> Загрузить as-> HTML, и вы получите HTML-страницу с кодом и выводом.
  2. Откройте экспортированный HTML-браузер и активируйте консоль браузера клавишей F12
  3. Запустите следующую команду в консоли:

    document.querySelectorAll("div.input").forEach(function(a){a.remove()})
    
  4. Код удаляет все входные данные div DOM. Затем right mouse button "Сохранить страницу как" и сохраните "Полная страница" (не одна страница).

  5. Вы получите страницу со связанной папкой в Windows. Используйте хитрость, заархивируйте html-страницу, а затем распакуйте, чтобы отменить привязку. Папка бесполезна.

  6. Теперь это одна HTML-страница без кода. Вы можете перераспределить его или распечатать в формате PDF.

Если вы не используете Firefox или Windows, отрегулируйте вышеуказанные шаги 3-6.

Ответ 3

Вы можете добавить этот css на свою страницу, а затем распечатать в PDF из браузера. Обратите внимание, что код скрыт, а не удален.

div.output_prompt { visibility: hidden; }
*{ font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif !important }
.input,#header { display: none; }

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

$(".input").remove()

Насколько я знаю, нет способа генерировать через латекс PDF, который не включает код. Было бы здорово иметь расширение Jupyter для ноутбука, которое делает это, хотя...

Ответ 4

nbconvert использует шаблоны для преобразования ноутбука JSON в документ; например, в шаблоне уценки, который поставляется с nbconvert, markdown.tpl:

{% block input %}
{% if nb.metadata.language_info %}{{ nb.metadata.language_info.name }}{% endif %}
{{ cell.source}}
{% endblock input %}

который печатает каждый источник ячейки на выходе. Если вы удалите {{ cell.source}}, то источник соты не будет распечатан. В шаблонах HTML и Latex есть соответствующие блоки.

Еще лучше, создайте свой собственный шаблон, который сделает именно то, что вы хотите:)

Ответ 5

В качестве обобщения этого ответа, чтобы шаблон hidecode мог быть доступен из нескольких мест:

  • Перейдите в следующий каталог (измените user_name на свое имя пользователя):

    cd /home/<user_name>/.jupyter
    
  • Создайте jupyter_nbconvert_config.py в этом каталоге.

  • Запишите следующее в файл .py (измените user_name на свое имя пользователя):

    c = get_config()
    c.TemplateExporter.template_path = ['.', "/home/<user_name>/.jupyter" ]
    c.LatexExporter.template_path = ['.', "/home/<user_name>/.jupyter"]
    
  • Создайте файл шаблона в этом каталоге с именем hidecode.tplx или hidecode.tpl:

        ((*- extends 'article.tplx' -*))
    
    ((* block input_group *))
        ((*- if cell.metadata.get('nbconvert', {}).get('show_code', False) -*))
                ((( super() )))
        ((*- endif -*))
    ((* endblock input_group *))
    
  • Затем следующее должно сгенерировать PDF без кодов .ipynb файлов (Изменить file_name на ваше имя файла):

    jupyter nbconvert --to pdf '<file_name>.ipynb' --template=hidecode.tpl
    

Ответ 6

Вот как я это делаю: Я просто загружаю свой ноутбук как html.

Затем запустите этот python script, чтобы преобразовать этот html файл, чтобы исчезли подсказки и ячейки кода:

FILE = "/somewhere/myHTMLFile.html"

with open(FILE, 'r') as html_file:
    content = html_file.read()

# Get rid off prompts and source code
content = content.replace("div.input_area {","div.input_area {\n\tdisplay: none;")    
content = content.replace(".prompt {",".prompt {\n\tdisplay: none;")

f = open(FILE, 'w')
f.write(content)
f.close()

Этот script базовый добавляет атрибут CSS: display: none 'для всех divs класса "prompt" или "input_area".