【问题标题】:How to convert IPython notebooks to PDF and HTML?如何将 IPython 笔记本转换为 PDF 和 HTML?
【发布时间】:2013-04-06 13:58:32
【问题描述】:

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

【问题讨论】:

标签: python jupyter-notebook ipython


【解决方案1】:

来自docs

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

【讨论】:

  • 谢谢! HTML 版本真的很好,而且很容易获得。但是PDF不好,如果图表在两页之间,则将其切成两部分,并且将长代码行也剪掉。
  • @nunzio13n -- 至少你有 html...我没有用过 nbconvrt 所以我真的不能帮你。希望有过的人来...
  • 通过CTRL+P在浏览器中使用打印功能。
  • a) 从 Jupyter 导出为 HTML 似乎不会保存图片,b) 文件 -> 保存为表单 Firefox 为您提供了一个完全非交互的页面,只显示可见的内容。此外,您帖子中的链接现在已失效。
【解决方案2】:

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

给你现有的配置文件。 (您可以创建自己的,参考未来的文档,./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 的专家。

【讨论】:

  • 谢谢你,你澄清了我更多的疑惑。但是nbconvert2.py仍然不起作用,因为它甚至需要一个Config文件[NbconvertApp] Config file for profile './profile/latex_base.nbcv' not found, giving up并且nbconvert没有直接给我一个pdf文件,而是一个latex文件,我必须用pdflatex处理*.tex文件,但这是一个很好的解决方案。
  • 可能不是 nbconvert 的问题,但这是由于我缺乏这方面的知识。也许当文档出来的时候一切都清楚了,带有笔记本的 ipython 和 nbconvert 是一个非常好的工作,我相信它很快就会成为一个文档。
  • 这似乎丢失/不提供任何 ipython 编号(希望它会使用 ipython 指令进行转换)。
  • 是否有 API 版本可以实现这一点?我看到有IPython.nbconvert.exporters.latex,我想知道是否有一种方法可以在没有命令行工具的情况下从中获取 PDF 输出。另外,让它工作的依赖是什么? (pandoc,tetex,其他东西?)我认为它不是跨平台的(在 Windows 上不起作用)。 TIA!
【解决方案3】:

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

$ 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”库。我正在调查。

【讨论】:

  • 尝试:$ ipython nbconvert your_file.ipynb --to latex --post PDF
  • ty @moldovean 让我再看看这个。更多的谷歌搜索刚刚揭示了这个问题。参数顺序无关紧要,我仍然得到“没有这样的文件或目录”。
  • @moldovean,事实证明某些库是必需的,但 ipynb 没有安装。在这种情况下,我的路径上至少需要 pdflatex。请参阅我的 PR 以改进错误检查,github.com/ipython/ipython/pull/6884
【解决方案4】:

如果您安装了 LaTeX,您可以使用 File -> 下载为 -> 通过 LaTeX (.pdf) 直接从 Jupyter 笔记本下载 PDF 格式 /em>。否则按照这两个步骤。

  1. 对于 HTML 输出,您现在应该使用 Jupyter 代替 IPython 并选择 文件 -> 下载为 -> 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

【讨论】:

【解决方案5】:

如果您使用的是sagemath 云版本,您只需转到左下角,
选择文件 → 下载为 → Pdf via LaTeX (.pdf)
如果需要,请查看屏幕截图。



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

【讨论】:

    【解决方案6】:

    我一直在寻找将笔记本保存为 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。只是一个尝试的建议(显然并非所有设置都相同)。

    【讨论】:

      【解决方案7】:

      同时传递--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 中测试。

      【讨论】:

      • nbconvert 是否可以选择指定要使用的内核?
      • @HammanSamuel 我从未接触过,如果您发现/提出单独的问题并在此处链接,请告诉我。
      【解决方案8】:

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

      【讨论】:

        【解决方案9】:
        1. 另存为 HTML ;
        2. Ctrl + P ;
        3. 另存为PDF

        【讨论】:

        • 建议展开所有输出单元格。这样PDF就清晰了。
        【解决方案10】:

        其他建议的方法:

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

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

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

        步骤:

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

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

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

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

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

        【讨论】:

          【解决方案11】:

          您可以先将笔记本转换为 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 格式。

          【讨论】:

            【解决方案12】:

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

            【讨论】:

              【解决方案13】:

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

              GUI方式

              • 打开 jupyter 笔记本

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

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

              命令行方式

              • 打开终端
              • 导航到包含 jupyter notebook 的文件夹
              • 键入“jupyter nbconvert --to pdf your_jupyter_notebook.ipynb "

              PS:如果失败,请尝试Yogesh's answer

              【讨论】:

                【解决方案14】:

                partizanos's 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”
                • 工作完成

                【讨论】:

                • 使用 --template report 作为附加选项,通过在笔记本中采用不同的降价标题,还将 ToC 编译为生成的 pdf。
                【解决方案15】:

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

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

                【讨论】:

                  【解决方案16】:

                  notebook-as-pdfInstall

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

                  使用它

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

                  jupyter-nbconvert --to PDFviaHTML filename.ipynb

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

                  或 pip install notebook-as-pdf

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

                  【讨论】:

                  • 谢谢,这对我很有效。我首先在 Python 3.6.8 环境中尝试过,但遇到了一些问题。然后我升级到基于 Conda 的 Python 3.7.8 环境,它就像一个 Charm 一样工作。
                  • 那是因为 asyncio 是包的一个依赖,在代码的某处有一个 asyncio.run 是 3.7 唯一的方法。
                  【解决方案17】:

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

                  【讨论】:

                    【解决方案18】:

                    有一个library 叫做“notebook as PDF”pip install notebook-as-pdf

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

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

                    使用 Ctrl+P

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

                    • 另外,分页也不正确。让事情变得更加困难 读者阅读和理解。

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

                    【讨论】:

                      【解决方案19】:

                      简单直接的方式

                      1-在 Jupiter notebook 中点击 Ctrl + P

                      2-另存为 PDF

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2015-05-12
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-12-10
                        • 2022-01-24
                        • 2014-05-11
                        • 1970-01-01
                        相关资源
                        最近更新 更多