繁体   English   中英

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

[英]How to convert IPython notebooks to PDF and HTML?

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

如果您安装了 LaTeX,您可以使用File -> Download as -> PDF via LaTeX (.pdf)直接从 Jupyter notebook 下载 PDF 格式。 否则按照这两个步骤。

  1. 对于 HTML 输出,您现在应该使用 Jupyter 代替 IPython 并选择File -> Download as -> HTML (.html)或运行以下命令:

     jupyter nbconvert --to html notebook.ipynb

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

    Google Colaboratory 是 Google 的免费 Jupyter 笔记本环境,无需设置,完全在云中运行。 如果您使用的是 Google Colab,命令是相同的,但 Google Colab 只允许您下载 .ipynb 或 .py 格式。

  2. 将 html 文件 notebook.html 转换为名为 notebook.pdf 的 pdf 文件。 在 Windows、macOS ( brew install wkhtmltodf ) 或 Linux 中,安装wkhtmltopdf wkhtmltopdf 是一个命令行实用程序,用于使用 WebKit 将 html 转换为 pdf。 您可以从链接的网页下载 wkhtmltopdf,或者在许多 Linux 发行版中可以在其存储库中找到它。

     wkhtmltopdf notebook.html notebook.pdf

原始(现在几乎已过时)修订:将 IPython 笔记本文件转换为 html。

ipython nbconvert --to html notebook.ipynb

还传递--execute标志以生成输出单元

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

最佳做法是将输出保留在笔记本之外以进行版本控制,请参阅: 在版本控制下使用 IPython 笔记本

但是,如果您不通过--execute ,输出将不会出现在 HTML 中,另请参阅: 如何从终端运行 .ipynb Jupyter Notebook?

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

在 Jupyter 4.4.0 中测试。

文档

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

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 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 个人资料)正在处理 tex/pdf/sphinx 导出,并且在撰写本文时是从 ipynb 文件生成 PDF 的专家。

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

如果您的文档中有数学、科学公式,那么只有这个答案对您有用。 即使您没有它们,它也可以正常工作。

图形界面方式

  • 打开 jupyter 笔记本打开 jupyter 笔记本

  • 通过 LaTeX 转到文件 > 下载为 > HTML 或 PDF 通过 LaTeX 转到文件 > 下载为 > HTML 或 PDF

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

命令行方式

  • 打开终端
  • 导航到包含 jupyter 笔记本的文件夹
  • 输入“jupyter nbconvert --to pdf your_jupyter_notebook.ipynb”

PS:如果失败,请尝试Yogesh 的回答

如果您使用的是sagemath云版本,您可以简单地转到左下角,
通过 LaTeX (.pdf) 选择文件 → 下载为 → Pdf
如果需要,请检查屏幕截图。

屏幕截图 将 ipynb 转换为 pdf

如果由于任何原因它不起作用,您可以尝试另一种方法。
选择文件→打印预览,然后在预览
右键单击→打印,然后选择另存为pdf。

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

以下我已经实施的步骤:操作系统:Ubuntu、Anaconda-Jupyter notebook、Python 3

1 以 HTML 格式保存笔记本:

  1. 启动要以 HTML 格式保存的 jupyter notebook。 首先正确保存笔记本,以便 HTML 文件具有您的代码/笔记本的最新保存版本。

  2. 从笔记本本身运行以下命令:

    !jupyter nbconvert --to html your_notebook_name.ipynb

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

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

2 将 html 保存为 PDF:

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

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

简单直接的方式只是

1- 在 Jupiter notebook 中单击 Ctrl + P

2-另存为PDF 在此处输入图像描述

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

对于那些无法在他们的系统中安装wkhtmltopdf的人,除了这个问题的答案中已经提到的许多方法之外,还有一种方法是简单地从 jupyter notebook 下载文件作为 HTML 文件,将其上传到HTML to PDF ,然后下载从那里转换的pdf文件。

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

我还不能让 pdf 工作。 文档暗示我应该能够让它与乳胶一起使用,所以也许我的乳胶不起作用。

$ 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' <type 'unicode'> 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”库。 我正在调查那个。

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

  1. 左键单击笔记本
  2. 点击下拉菜单中的“另存为...”
  3. 相应地保存

没有打印预览,没有打印,没有 nbconvert。 使用 Jupyter Version: 1.0.0 只是一个尝试的建议(显然并非所有设置都相同)。

其他建议的方法:

  1. 使用“打印然后选择另存为 pdf”。 从您的 HTML 文件中删除将导致边界边缘丢失、语法突出显示、绘图修剪等。

  2. 在使用过时的版本时,其他一些库已被证明是损坏的。

解决方案:更好、更轻松的选择是使用在线转换器,它将 *.ipynb 的 *.html 版本转换为 *.pdf。

脚步:

  1. 首先,从您的 Jupyter 笔记本界面,使用以下命令将您的 *.ipynb 转换为 *.html:

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

  1. 此处上传新创建的 *.html 文件,然后选择 HTML 到 PDF 选项。

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

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

我在 inline 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 * 
}

partizanos answer的纯python版本。

  • 打开终端(Linux、MacOS)或找到可以在 Windows 中执行 python 文件的位置
  • 在 .py 文件中键入以下代码(例如 tejas.py)
import os

[os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir(".") if f.endswith("ipynb")]
  • 导航到包含 jupyter 笔记本的文件夹
  • 确保 tejas.py 在当前文件夹中。 如有必要,将其复制到当前文件夹。
  • 输入“python tejas.py”
  • 任务完成

notebook-as-pdf安装

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

用它

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

jupyter-nbconvert --to PDFviaHTML filename.ipynb

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

或 pip install notebook-as-pdf

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

有一个名为“notebook as PDF”的pip install notebook-as-pdf

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

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

在此处输入图像描述

使用 Ctrl+P

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

  • 此外,分页也不正确。 使读者更难阅读和理解。

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

您可以使用这个简单的在线服务。 它支持 HTML 和 PDF。

最好和最简单的方式

只需按

Mac中的Command + P.

Windows中的Control + P.

打开“打印”菜单,然后选择“另存为pdf”并按“保存”。

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

我知道并在下面描述了 4 种将 Jupyter Notebook 导出为 PDF 格式的方法。

1. 打印为 PDF

请在 Jupyter Notebook 应用中打开您要导出的笔记本,然后从您的网络浏览器选项中选择打印。 应该有一个选项Save as PDF 这是最简单的方法。

2. 使用 Jupyter 导出为 PDF

在 Jupyter Notebook 中有一个直接导出 PDF 的选项。 单击File -> Download as -> PDF via LaTeXPDF via HTML 此解决方案在后台使用nbconvert工具。 您需要安装其他软件包才能使其正常工作,否则您将得到500: Internal Server Error 有关详细信息,请查看nbconvert 安装文档

nbconvert

该解决方案类似于第 2 点,但使用的是命令行工具nbconvert 假设安装了所有其他软件包,转换非常简单:

jupyter nbconvert --to webpdf --allow-chromium-download your-notebook-file.ipynb

--allow-chromium-download仅在第一次使用时才需要。

4. 使用 Mercury 导出

有一个用于共享笔记本的开源框架Mercury 它将笔记本转换为交互式文档(可以隐藏代码)。 Mercury中,用户可以调整小部件的值并使用新参数执行 notebook。 生成的笔记本可以下载为 PDF(或 HTML)文件。

对于那些无法安装第三方软件并需要从 IPYNB 快速转换为 PDF、HTML 和其他格式的人,我测试了一个免费的在线应用程序:
垂直 IPYNB 转 PDF
垂直 IPYNB 到 HTML

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM