如何从Jupyter笔记本制作可呈现的PDF?

时间:2019-02-15 12:24:45

标签: jupyter-notebook

我知道我可以单击File -> Print Preview,然后让浏览器将结果另存为PDF。但是该PDF将包含很多代码。

我可以从打印预览中隐藏零件,还是可以使用其他工具制作PDF?

理想情况下,会有魔术功能:

  • %hide:隐藏单元格及其输出
  • %hide-code:仅隐藏单元格的代码,但显示代码的输出

2 个答案:

答案 0 :(得分:2)

在浏览器中打印为PDF

在JupyterLab中,您可以单击doc中所示的边栏来隐藏单元格的输入和输出。隐藏后,您可以使用浏览器的打印菜单生成PDF。我已经在FireFox上对其进行了测试,并期望在Chrome或Edge上获得类似的结果。

enter image description here

使用nbconvert导出为PDF

如果您希望从ipynb格式向pdf进行本机转换,那么不错的旧nbconvert工具就是您的朋友。它通常与Jupyter一起提供,可以在JupyterLab File->Export Notebook As...->PDF菜单中或在经典的Jupyter Notebook界面File->Download as->PDF (via LaTeX)中方便地调用。 如nbextension中所述,可以通过设置单元的元数据hide_input=true并安装issue #155来实现隐藏单元中的输入/输出。

经典Jupyter中的“打印预览”菜单

最后一个问题

  

我可以从打印预览中隐藏零件,还是可以使用其他工具制作PDF?

经典Jupyter界面中的“打印预览”按钮是调用nbconvert生成HTML文件并将浏览器重定向到它的快捷方式。因此,可以使用nbconvert的类似配置来隐藏输入(如上所述(问题#155))。此功能由jupyter_contrib_nbextensions捆绑包实现,并在doc中进行了解释。

答案 1 :(得分:0)

由于上述答案对我不起作用;我找到了另一个解决方案:

我使用了另外一个软件包notebook-as-pdf

阅读tutorial here。它使用Chromium,是迄今为止对我可靠的唯一方法。 “打印预览”仍然不起作用。但它会生成没有代码输入的干净PDF。

我愿意:

  1. pip install -U notebook-as-pdf
  2. pyppeteer-install
  3. jupyter nbconvert --to PDFviaHTML --TemplateExporter.exclude_input=True PATH_TO_YOUR_FILE.ipynb

什么对我不起作用:

  1. 上述解决方案。
  2. those answers
  3. 中提到的所有脚本