Экспорт ноутбука в 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
- Запустите блокнот Jupyter и загрузите блокнот в браузер: File-> Загрузить as-> HTML, и вы получите HTML-страницу с кодом и выводом.
- Откройте экспортированный HTML-браузер и активируйте консоль браузера клавишей
F12
-
Запустите следующую команду в консоли:
document.querySelectorAll("div.input").forEach(function(a){a.remove()})
-
Код удаляет все входные данные div DOM. Затем right mouse button
"Сохранить страницу как" и сохраните "Полная страница" (не одна страница).
-
Вы получите страницу со связанной папкой в Windows. Используйте хитрость, заархивируйте html-страницу, а затем распакуйте, чтобы отменить привязку. Папка бесполезна.
-
Теперь это одна 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".