2016-09-27 9 views
0

Я пытаюсь экспортировать pdf-копию ноутбука jupyter с помощью nbconvert изнутри ячейки ноутбука. Я прочитал documentation, но я просто не могу найти базовый код для выполнения команды nbconvert и экспорта в pdf.минимальный пример того, как экспортировать блок jupyter в pdf с помощью nbconvert и PDFExporter()

Я смог зайти так далеко, но я надеялся, что кто-то может просто заполнить последние пробелы.

from nbconvert import PDFExporter 
notebook_pdf = PDFExporter() 
notebook_pdf.template_file = '../print_script/pdf_nocode.tplx' 

Обратите внимание на то, как добраться отсюда до фактического получения pdf-файла.

Любая помощь будет оценена по достоинству.

+0

Обратите внимание, что я нашел простой способ обойти это, просто используя магию командной строки: '! Jupyter nbconvert --to pdf --template pdf_nocode.tplx ../ mgmt_notebook05092016.6.pynb', но по-прежнему кажется полезным как использовать выполнить создание PDF из nbconvert api. – krishnab

ответ

3

Я не эксперт, но мне удалось получить эту работу. Ключ в том, что вам нужно предварительно обработать ноутбук, который позволит вам использовать функцию PDFExporter.from_notebook_node(). Это даст вам ваши pdf_data в байтовый формат, который затем может быть записан в файл:

import nbformat 
from nbconvert.preprocessors import ExecutePreprocessor 
from nbconvert import PDFExporter 

notebook_filename = "notebook.ipynb" 

with open(notebook_filename) as f: 
    nb = nbformat.read(f, as_version=4) 

ep = ExecutePreprocessor(timeout=600, kernel_name='python3') 

ep.preprocess(nb, {'metadata': {'path': 'notebooks/'}}) 

pdf_exporter = PDFExporter() 

pdf_data, resources = pdf_exporter.from_notebook_node(nb) 

with open("notebook.pdf", "wb") as f: 
    f.write(pdf_data) 
    f.close() 

Стоит отметить, что ExecutePreprocessor требует Dict ресурсов, но мы не используем его в этом примере.

+0

спасибо за подсказку. Я попробую это. – krishnab

+0

Если это работает, не стесняйтесь принять мой ответ;) – GMeister