关于python:如何将IPython笔记本转换为PDF和HTML?

How to convert IPython notebooks to PDF and HTML?

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


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

    1
    ipython nbconvert --to html notebook.ipynb

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

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

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

    1
    wkhtmltopdf notebook.html notebook.pdf

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

    以下应该有效:

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

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

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

    Nbviewer使用nbconvert2所以它与HTML相当不错。

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ 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 doc,./nbconvert2.py --help-all应该为您提供一些可以在您的个人资料中使用的选项。)

    然后

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

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

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

    1
    2
    3
    4
    5
     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的专家。


    来自文档:

    If you want to provide others with a static HTML or PDF view of your notebook, use the Print button. This opens a static view of the document, which you can print to PDF using your operating system’s facilities, or save to a file with your web browser’s ‘Save’ option (note that typically, this will create both an html file and a directory called notebook_name_files next to it that contains all the necessary style information, so if you intend to share this, you must send the directory along with the main html file).


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

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

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

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

    对于没有标题的HTML片段:如何将IPython笔记本导出为HTML以用于博客文章?

    在Jupyter 4.4.0中测试过。


  • 另存为HTML;
  • Ctrl + P;
  • 另存为PDF。

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


    我无法获得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'。我正在调查那个。


    最好和最简单的方式

    只需按

    Command + P in Mac

    Control + P in Windows

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


    我在上面的内联python中结合了一些答案,你可以添加到?/ .bashrc或?/ .zshrc来编译和转换许多笔记本到一个pdf文件

    1
    2
    3
    4
    5
    6
    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 *
    }

    您可以通过首先将笔记本转换为HTML然后转换为PDF格式来实现:

    我已经实施了以下步骤:
    操作系统:Ubuntu,Anaconda-Jupyter笔记本,Python 3

    1以HTML格式保存Notebook:

  • 启动要以HTML格式保存的jupyter笔记本。首先正确保存笔记本,以便HTML文件将具有最新保存的代码/笔记本版本。
  • 从笔记本本身运行以下命令:

    !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:

  • 现在打开your_notebook_name.html文件(单击它)。它将在浏览器的新选项卡中打开。
  • 现在去打印选项。从这里您可以将此文件保存为pdf文件格式。
  • 请注意,从打印选项中我们还可以灵活选择笔记本的一部分以pdf格式保存。


    其他建议的方法:

  • 使用"打印然后选择另存为pdf"。从您的HTML文件中将导致边框边缘丢失,突出显示语法,修剪图表等。

  • 在使用过时的版本时,其他一些库已被证明是破碎的。

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

    脚步:

  • 首先,从您的Jupyter笔记本界面将* .ipynb转换为* .html使用
  • File > Download as > HTML(.html)

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

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

  • 你现在有.ipynb,.html和.pdf文件


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

  • 左键单击笔记本
  • 点击下拉菜单中的"另存为..."
  • 相应保存
  • 没有打印预览,没有打印,没有nbconvert。使用Jupyter Version: 1.0.0。只是一个尝试的建议(显然不是所有设置都相同)。


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

    屏幕截图将ipynb转换为pdf

    如果它因任何原因不起作用,你可以尝试另一种方式。

    选择文件 - >打印预览,然后选择预览

    右键单击 - >打印,然后选择另存为pdf。