如何将IPython笔记本转换为PDF和HTML?

时间:2013-04-14 11:19:18

标签: python jupyter-notebook ipython

我想转换我的ipython-notebooks来打印它们,或者只是将它们以html格式发送给其他人。我注意到已经存在一个工具,nbconvert。我已经下载了它,但我不知道如何使用nbconvert2.py来转换笔记本,因为nbconvert说它已被弃用。 nbconvert2.py说我需要一个配置文件来转换笔记本,它是什么?是否存在有关此工具的文档?

19 个答案:

答案 0 :(得分:44)

  1. 将IPython笔记本文件转换为html。

    ipython nbconvert --to html notebook.ipynb  
    

    这会将IPython文档文件notebook.ipynb转换为html输出格式。

    更新:对于HTML输出,您现在应该使用jupyter代替ipython:

    jupyter nbconvert --to html notebook.ipynb
    
  2. 将html文件notebook.html转换为名为notebook.pdf的pdf文件。在Windows,Mac或Linux中,安装wkhtmltopdf。 wkhtmltopdf是一个命令行实用程序,用于使用WebKit将html转换为pdf。您可以从链接的网页下载wkhtmltopdf,也可以在许多Linux发行版中下载它们的存储库。

    wkhtmltopdf notebook.html notebook.pdf   
    

答案 1 :(得分:11)

nbconvert尚未完全被nbconvert2取代,如果您愿意,仍然可以使用它,否则我们会删除可执行文件。这只是一个警告,我们不再修复nbconvert1了。

以下内容应该有效:

./nbconvert.py --format=pdf yourfile.ipynb 

如果您使用的是IPython最新版本,请不要使用打印视图,只需使用普通打印对话框即可。 chrome中的图形切割是一个已知问题(Chrome不尊重某些打印css),并且使用firefox工作得更好,而不是所有版本。

至于nbconvert2,它仍然是高度开发的,需要编写文档。

Nbviewer使用nbconvert2,因此HTML非常不错。

当前可用的配置文件列表:

$ ls -l1 profile|cut -d. -f1

base_html
blogger_html
full_html
latex_base
latex_sphinx_base
latex_sphinx_howto
latex_sphinx_manual
markdown
python
reveal
rst

为您提供现有的个人资料。 (您可以创建自己的,cf cf future doc,./nbconvert2.py --help-all应该为您提供一些可以在个人资料中使用的选项。)

然后

$ ./nbconvert2.py [profilename] --no-stdout --write=True <yourfile.ipynb>

只要在cwd中提取数字,就应该编写你的(tex)文件。 是的我知道这不是很明显,它可能会改变因此没有文件......

原因是nbconvert2主要是一个python ,你可以在伪代码中执行:

 MyConverter = NBConverter(config=config)
 ipynb = read(ipynb_file)
 converted_files = MyConverter.convert(ipynb)
 for file in converted_files :
     write(file)

一旦API稳定,入口点将会更晚。

我只想指出@jdfreder (github profile)正在处理tex / pdf / sphinx导出,并且是撰写本文时从ipynb文件生成PDF的专家。

答案 2 :(得分:9)

对于无法在自己的系统中安装wkhtmltopdf的用户,除了在此问题的答案中已经提到的许多方法外,还有另一种方法是简单地从jupyter笔记本中将文件下载为html文件,然后上传该文件到HTML to PDF,然后从那里下载转换后的pdf文件。

在这里,您将IPython笔记本(.ipynb)转换为PDF(.pdf)和HTML(.html)格式。

答案 3 :(得分:7)

来自docs

  

如果要向其他人提供笔记本的静态HTML或PDF视图,请使用“打印”按钮。这将打开文档的静态视图,您可以使用操作系统的工具将其打印为PDF,或使用Web浏览器的“保存”选项保存到文件中(请注意,这通常会创建一个html文件和一个名为notebook_name_files旁边包含所有必需的样式信息,因此如果您打算共享它,则必须将目录与主html文件一起发送。)

答案 4 :(得分:4)

同时传递--execute标志以获取输出

jupyter nbconvert --execute --to html notebook.ipynb
jupyter nbconvert --execute --to pdf notebook.ipynb

最佳做法是将输出保留在笔记本中以进行版本控制,请参阅:Using IPython notebooks under version control

但是,如果您没有通过--execute,则输出不会出现在HTML中,另请参阅:How to run an .ipynb Jupyter Notebook from terminal?

对于没有标题的HTML片段:How to export an IPython notebook to HTML for a blog post?

在Jupyter 4.4.0中测试。

答案 5 :(得分:2)

notebook-as-pdfInstall

python -m pip install notebook-as-pdf pyppeteer安装

使用

您也可以将其与nbconvert一起使用:

jupyter-nbconvert-通过HTML filename.ipynb转换为PDF

这将创建一个名为filename.pdf的文件。

或通过pip安装Notebook-as-pdf

从笔记本创建pdf jupyter-nbconvert-toPDFviaHTML

答案 6 :(得分:2)

  

仅当您的文档中包含数学公式和科学公式时,此答案才对您有用。即使您没有它们,它也可以正常工作。

GUI方式

  • 打开jupyter笔记本 open the jupyter notebook
  • 转到文件>通过LaTeX Go to Files > Download as > HTML or PDF via LaTeX

  • 下载为> HTML或PDF
  • 然后检查“下载”文件夹中的文件。 PS:如果LaTeX在编译PDF时出现任何错误,它将失败。如果发生这种情况,请下载HTML文件,然后使用http://webpagetopdf.com/或任何其他类似的服务将HTML转换为PDF。

命令行方式

  • 打开终端
  • 导航到包含jupyter笔记本的文件夹
  • 输入“ jupyter nbconvert --pdf your_jupyter_notebook.ipynb ” PS:如果失败,请尝试Yogesh's answer

答案 7 :(得分:1)

我无法获得pdf工作。文档暗示我应该能够使用乳胶,所以也许我的乳胶不起作用。 http://ipython.org/ipython-doc/rel-1.0.0/interactive/nbconvert.html $ ipython --version 1.1.0 $ ipython nbconvert --to latex --post PDF myfile.ipynb [NbConvertApp] ... raise child_exception OSError: [Errno 2] No such file or directory $ ipython nbconvert --to pdf myfile.ipynb [NbConvertApp] CRITICAL | Bad config encountered during initialization: [NbConvertApp] CRITICAL | The 'export_format' trait of a NbConvertApp instance must be any of ['custom', 'html', 'latex', 'markdown', 'python', 'rst', 'slides'] or None, but a value of u'pdf' was specified.

然而,HTML使用“幻灯片”非常有效,而且很漂亮! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

//更新2014-11-07Fri:IPython v3语法不同,它更简单; $ ipython nbconvert --to PDF myfile.ipynb 在所有情况下,我似乎都错过了图书馆&pdflatex&#39;。我正在调查那个。

答案 8 :(得分:1)

您可以使用this简单的在线服务。它同时支持HTML和PDF。

答案 9 :(得分:1)

我发现将网络上的笔记本转换为pdf的最简单方法是首先在网络服务nbviewer上查看它。然后,您可以将其打印到pdf文件。如果笔记本电脑在本地驱动器上,则首先将其上传到github存储库,然后将其URL用于nbviewer。

答案 10 :(得分:1)

  1. 另存为 HTML
  2. Ctrl + P ;
  3. 另存为 PDF

答案 11 :(得分:1)

我认为最简单的方法是“ Ctrl + P”>另存为“ pdf”。 就是这样。

答案 12 :(得分:0)

有一个 library 称为“notebook as PDF”pip install notebook-as-pdf

它通过 HTML 将笔记本转换为 pdf。安装库后,您可以在“文件”选项卡的“下载为”选项中找到“PDF via HTML (.pdf)”。

文件>下载为>通过 HTML(.pdf) 格式的 PDF

enter image description here

使用 Ctrl+P

  • 选项可能无法正常工作,有时有很多单元格。

  • 此外,分页也不正确。让它变得更难 供读者阅读和理解。

与此处介绍的其他选项相比,我发现此方法非常直观、快速且更好。

答案 13 :(得分:0)

partizanos's answer的纯Python版本。

  • 打开Terminal(Linux,MacOS)或指向可以在Windows中执行python文件的位置
  • 在.py文件中输入以下代码(例如tejas.py)

    导入操作系统

    [os.system(“ jupyter nbconvert --to pdf” + f)  for f in os.listdir(“。”)if f.endswith(“ ipynb”)]

  • 导航到包含jupyter笔记本的文件夹

  • 确保tejas.py在当前文件夹中。如有必要,将其复制到当前文件夹。
  • 输入“ python tejas.py”
  • 工作完成

答案 14 :(得分:0)

我在嵌入式python中结合了上面的一些答案,您可以将它们添加到〜/ .bashrc或〜/ .zshrc中,以编译并将许多笔记本转换为单个pdf文件

function convert_notebooks(){
  # read anything on this folder that ends on ipynb and run pdf formatting for it  
  python -c 'import os; [os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir (".") if f.endswith("ipynb")]'
  # to convert to pdf u must have installed latex and that means u have pdfjam installed
  pdfjam * 
}

答案 15 :(得分:0)

您可以先将笔记本转换为HTML,然后转换为PDF格式:

执行以下步骤: 操作系统:Ubuntu,Anaconda-Jupyter笔记本,Python 3

1以HTML格式保存笔记本:

  1. 启动要以HTML格式保存的jupyter笔记本。首先,正确保存笔记本,以使HTML文件具有您代码/笔记本的最新保存版本。
  2. 从笔记本计算机本身运行以下命令:

    !jupyter nbconvert --to html your_notebook_name.ipynb

执行后将创建笔记本的HTML版本,并将其保存在当前工作目录中。您将看到一个带有your_notebook_name.html名称的html文件被添加到当前目录

({your_notebook_name.ipynb-> your_notebook_name.html)。

2将html另存为PDF:

  1. 现在打开该your_notebook_name.html文件(单击它)。它将在浏览器的新标签页中打开。
  2. 现在转到打印选项。您可以从此处以pdf文件格式保存此文件。

请注意,从打印选项中,我们还可以灵活选择笔记本的一部分以pdf格式保存。

答案 16 :(得分:0)

其他建议的方法:

  1. 使用“打印,然后选择另存为pdf”。 HTML文件中的内容会导致边框的丢失,语法突出显示,图的修剪等。

  2. 当使用过时的版本时,其他一些库显示已损坏。

解决方案:更好,更轻松的选择是使用在线转换器https://www.sejda.com/html-to-pdf,该转换器会将* .ipynb的* .html版本转换为* .pdf。

步骤:

  1. 首先,在Jupyter笔记本界面中,使用
  2. 将* .ipynb转换为* .html。
  

文件>下载为> HTML(.html)

  1. 将新创建的* .html文件上传到https://www.sejda.com/html-to-pdf,然后选择HTML到PDF选项。

  2. 您的pdf文件现在可以下载了。

  3. 您现在拥有.ipynb,.html和.pdf文件

答案 17 :(得分:0)

我一直在寻找一种将笔记本保存为html的方法,因为每当我尝试使用我的新Jupyter安装下载为html时,我总会收到500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'错误。奇怪的是,我发现以html格式下载非常简单:

  1. 在笔记本中左键单击
  2. 点击&#39;另存为...&#39;在下拉菜单中
  3. 相应保存
  4. 无打印预览,无打印,无nbconvert。使用Jupyter Version: 1.0.0。只是一个尝试的建议(显然并非所有设置都相同)。

答案 18 :(得分:0)

如果您使用的是sagemath云版,则只需转到左上角,选择文件 - &gt;下载为 - &gt; Pdf via LaTeX(.pdf)
如果需要,请检查屏幕截图。
Screenshot Convert ipynb to pdf

如果它因任何原因不起作用,你可以尝试另一种方式。
选择文件 - &gt;打印预览,然后预览
右键单击 - &gt;打印,然后选择另存为pdf。