104

所以,我一直在尝试将 jupyter notebook 保存为 PDF,但我就是不知道该怎么做。我尝试的第一件事是从文件菜单中下载为 PDF,但这样做会导致:

nbconvert failed: PDF creating failed

我尝试的下一件事是尝试像这样从命令提示符进行转换

$ ipython nbconvert --to latex --post PDF MyNotebook.ipynb 

但同样,这会导致错误消息

ImportError: No module named 'PDF'

如果我尝试

$ ipython nbconvert --to latex MyNotebook.ipynb 

这导致

IPython.nbconvert.utils.pandoc.PandocMissing: Pandoc wasn't found:
Please check that pandoc is installed

如果我尝试安装 pandoc ( pip install pandoc),这给了我

ImportError: No module named 'ConfigParser'

这就是我卡住的地方,因为我不知道还能做什么。任何人都知道如何解决任何问题?

4

19 回答 19

47

为了让它工作,我安装了latex、典型的latex extra 和pandoc。

使用 ubuntu:

sudo apt-get install texlive texlive-latex-extra pandoc

它需要一些时间:下载几个 100 Mb。我在某处读到,您可以将--no-install-recommends其用于 texlive 和 extra 以减少到 dl。

于 2016-04-13T12:35:32.930 回答
36

如果您在 Mac 上安装了 Homebrew,请打开终端 shell 并安装 pandoc,输入以下命令:

brew install pandoc

请耐心等待,在缓慢的互联网连接或较旧的系统上,安装和编译可能需要一段时间。

于 2015-04-10T13:51:09.457 回答
13

2015-4-22:看起来 IPython 更新意味着--to pdf应该使用它而不是--to latex --post PDF. 有一个相关的Github 问题

于 2015-04-22T22:08:02.217 回答
13

要将笔记本转换为 PDF,您首先需要安装 nbconvert。

pip install nbconvert
# OR
conda install nbconvert

接下来,如果您没有使用或尚未使用 Anaconda,则必须按照其网站上的说明或在 Linux 上安装 pandoc,如下所示:

sudo apt-get install pandoc

之后,您需要在您的机器上安装 XeTex:

您现在可以导航到包含 IPython Notebook 的文件夹并运行以下命令:

jupyter nbconvert --to pdf MyNotebook.ipynb

如需进一步参考,请查看此链接

于 2018-10-21T08:30:16.947 回答
5

正如对问题的评论所说,您将需要 pandoc 和 latex(例如 TeXShop)。我用 Homebrew 安装了 pandoc,只花了一秒钟。有了 pandoc 和 TeXShop,我可以生成乳胶但不能生成 pdf(在命令行上)。

ipython nbconvert --to latex mynotebook.ipynb

使用 TeXShop 探索乳胶 (.tex) 文件,失败是由于缺少样式表和定义。在安装完所有这些(adjustbox.sty、adjcalc.sty、trimclip.sty、collectbox.sty、tc-pgf.def、ucs.sty、uni-global.def、utf8x.def、ucsencs.def)后,它终于做到了工作。

然而,结果对我的口味来说有点太时髦了。从 Safari 打印 html 会丢失语法着色,这太糟糕了。否则,它看起来并不那么糟糕。(这都是在 OS X 上)。

于 2015-11-06T14:42:05.100 回答
5

我在 OS:Ubuntu 16.0 上使用 Anaconda-Jupyter Notebook 进行 Python 编程。

安装 Nbconvert、Pandoc 和 Tex:

打开一个终端并在其中执行以下命令。

安装 Nbconvert:虽然它是 Jupyter 生态系统的一部分,但仍然再次安装它

$conda install nbconvert

或者

$pip install nbconvert

但是如果你使用 anaconda,我会推荐使用 conda 而不是 pip

安装 Pandoc:因为 Nbconvert 使用 Pandoc 将 markdown 转换为 HTML 以外的格式。键入以下命令

$sudo apt-get install pandoc

安装 TeX:为了转换为 PDF,nbconvert 使用 TeX。键入以下命令

$sudo apt-get install texlive-xetex

执行完这些命令后,关闭打开的笔记本刷新主页或者重启打开的笔记本的内核。现在尝试将笔记本下载为 pdf :)

注:更多详情请参考官方文档:
https ://nbconvert.readthedocs.io/en/latest/install.html

于 2018-08-13T06:17:50.803 回答
4

这个 Python 脚本有 GUI,可以使用资源管理器选择要转换为 pdf 的 Ipython Notebook。wkhtmltopdf 的方法是我发现的唯一一种效果很好并且提供高质量 pdf 的方法。这里描述的其他方法是有问题的,语法高亮不起作用或图表混乱。

您需要安装 wkhtmltopdf: http ://wkhtmltopdf.org/downloads.html

和 Nbconvert

pip install nbconvert
# OR
conda install nbconvert

Python 脚本

# Script adapted from CloudCray
# Original Source: https://gist.github.com/CloudCray/994dd361dece0463f64a
# 2016--06-29
# This will create both an HTML and a PDF file

import subprocess
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename

WKHTMLTOPDF_PATH = "C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf"  # or wherever you keep it

def export_to_html(filename):
    cmd = 'ipython nbconvert --to html "{0}"'
    subprocess.call(cmd.format(filename), shell=True)
    return filename.replace(".ipynb", ".html")


def convert_to_pdf(filename):
    cmd = '"{0}" "{1}" "{2}"'.format(WKHTMLTOPDF_PATH, filename, filename.replace(".html", ".pdf"))
    subprocess.call(cmd, shell=True)
    return filename.replace(".html", ".pdf")


def export_to_pdf(filename):
    fn = export_to_html(filename)
    return convert_to_pdf(fn)

def main():
    print("Export IPython notebook to PDF")
    print("    Please select a notebook:")

    Tk().withdraw() # Starts in folder from which it is started, keep the root window from appearing 
    x = askopenfilename() # show an "Open" dialog box and return the path to the selected file
    x = str(x.split("/")[-1])

    print(x)

    if not x:
        print("No notebook selected.")
        return 0
    else:
        fn = export_to_pdf(x)
        print("File exported as:\n\t{0}".format(fn))
        return 1

main()
于 2016-06-30T19:23:22.547 回答
4

要将任何 Jupyter 笔记本转换为 PDF,请按照以下说明进行操作:

在 Jupyter 笔记本中):

Mac 操作系统上:

command + P --> 你会得到一个打印对话框 --> 将目的地更改为 PDF --> 点击打印

Windows上:

Ctrl + P --> 你会得到一个打印对话框 --> 将目标更改为 PDF --> 点击打印

如果上述步骤没有生成Jupyter notebook 的完整 PDF(可能是因为 Chrome,有时,不要打印所有输出,因为 Jupyter 会滚动大输出),

尝试执行以下步骤以删除菜单中的自动滚动:-

致谢:@ÂngeloPolotto

  1. 在您的 Jupyter Notebook 中,单击 jupyter notebook顶部的 单元格在此处输入图像描述

  2. 接下来单击所有输出->切换滚动以删除自动滚动。

在此处输入图像描述

于 2019-04-23T02:50:45.467 回答
2

notebook-as-pdfInstall 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

于 2020-06-28T18:34:53.077 回答
1

要将 .ipynb 转换为 pdf,您的系统应包含 2 个组件,

  1. nbconvert:是 jupyter 的一部分,允许将 ipynb 转换为 pdf

    pip install nbconvert
    OR 
    conda install nbconvert
    
  2. XeTeX: 将 ipynb 转换为 .tex 格式,然后再转换为 pdf。

    sudo apt-get install texlive-xetex
    

然后您可以使用以下命令转换为 pdf,

ipython nbconvert --to pdf YOURNOTEBOOK.ipynb

如果它不起作用,请安装 pandoc 并重试。

sudo apt-get install pandoc
于 2019-06-30T09:36:57.903 回答
1

作为一个全新的成员,我无法简单地在帖子上添加评论,但我想补充一下 Phillip Schwartz 提供的解决方案对我有用。希望处于类似情况的人们会尽快尝试这条道路,重点是。很长一段时间没有分页符是一个令人沮丧的问题,所以我很感谢上面的讨论。

正如 Phillip Schwartz 所说:“您需要安装 wkhtmltopdf:[ http://wkhtmltopdf.org/downloads.html][1]

和 Nbconvert "

然后添加“rawNBConvert”类型的单元格并包括:

<p style="page-break-after:always;"></p>

这似乎对我有用,生成的 PDF 在相应的位置有分页符。不过,您不需要运行自定义代码,因为一旦安装了这些实用程序,似乎将笔记本下载为 HTML、在浏览器中打开以及打印为 PDF 的“正常”路径就可以工作。

于 2018-01-13T19:29:08.483 回答
1

我在 Windows 10 中遇到了这个错误。我按照这三个步骤操作,它解决了我的问题:

  1. 安装 nbconvert

    点安装 nbconvert

  2. 安装 pandoc

https://pandoc.org/installing.html

  1. 安装 miktex

https://miktex.org/download


更新库也很好:

pip install jupyter --upgrade
pip install --upgrade --user nbconvert
于 2020-04-10T12:23:19.960 回答
1

我也遇到了各种各样的问题。我不知道它是否能提供您真正需要的东西,但我将我的笔记本下载为 HTML 文件,然后在我的 Chrome 浏览器中将其拉出,然后将其打印为 PDF 文件,我保存了该文件。它捕获了我所有的代码、文本和图表。这对我需要的东西来说已经足够好了。

于 2016-04-02T19:00:07.333 回答
1

Ubuntu 和 Mac OSX 都遇到过这个问题。经过一系列疯狂的搜索和试验,这两个问题都得到了解决。这需要texpandoc; 两个巨型外部程序都无法通过 Python 的pip.

Mac OSX:使用 MacPorts 安装 pandoc

port install pandoc

这应该需要将近一个小时才能完成(在通常情况下)。如果问题仍然存在,您可能必须安装 MacTeX 发行版。TeXLive 的。

对于 Ubuntu:从网络安装程序安装 vanilla TeXLive——而不是通过 apt-get。然后使用 apt-get 安装 pandoc。

sudo apt-get install pandoc

完整的 TeXLive 安装最多需要 4.4 GB 的磁盘空间。

为了省去所有这些麻烦,使用 IPython/Jupyter Notebook 的推荐方法是安装 Anaconda Python 发行版。

于 2016-01-29T04:51:29.403 回答
1

如果您使用的是sagemath云版本,您只需转到左下角,
选择 File --> Download as --> Pdf via LaTeX (.pdf)
如果需要,请查看屏幕截图。

屏幕截图 将 ipynb 转换为 pdf

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

于 2016-12-23T07:46:49.283 回答
0

对于 Ubuntu 用户,可以在此处找到答案。我也引用它:

最可能的原因是您没有安装适当的依赖项。您的 Ubuntu 系统必须安装一些有关转换 LaTeX 和 XeTeX 文件的软件包,以便将您的笔记本保存为 PDF。您可以通过以下方式安装它们:

sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended pandoc

此外,nbconvert另一个依赖项通常会随 jupyter 一起自动安装。但是您可以在激活虚拟环境的同时安装它以确保:

pip install -U nbconvert
于 2019-09-27T15:27:54.180 回答
0

在任何系统中,正确设置 nbconvert 以将 ipython 笔记本转换为 pdf/latex 的基本步骤是

  1. 安装 nbconvert
  2. 安装 pandoc
  3. 安装 Texlive

安装 nbconvert

pip install nbconvert

或者conda install nbconvert

安装 pandoc

sudo apt-get install pandoc对于 Ubuntu

或者sudo yum install pandoc对于 CentOS

对于其他人,请访问pandoc-installation

安装 texlive

您可以安装推荐的软件包或完全安装。对于 Ubuntu

sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended

`

对于其他人并根据您的系统和选择完全安装 texlive,请按照 tug给出的说明进行操作。

我从tug-texlive-download下载了 tar.gz 文件, 并按照 TeX Live - Quick install中给出的说明进行操作。安装说明总结:

  1. 清理

    rm -rf /usr/local/texlive/2019

    rm -rf ~/.texlive2019

  2. 运行安装程序

    解压压缩文件

    cd /your/unpacked/directory

    perl install-tl

    输入命令:i

  3. 设置路径

    sudo vi /etc/bash.bashrc并插入

    PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH; export PATH

    MANPATH=/usr/local/texlive/2019/texmf-dist/doc/man:$MANPATH; export MANPATH

    INFOPATH=/usr/local/texlive/2019/texmf-dist/doc/info:$INFOPATH; export INFOPATH

  4. 设置默认纸张大小

    tlmgr paper letter

这些命令可能因您的系统而异,但基本步骤保持不变。

于 2020-02-11T09:35:30.457 回答
0

我发现 nbconvert/utils/pandoc.py 有一个代码错误,导致我的机器出错。该代码检查 pandoc 是否在您的环境变量路径中。对于我的机器,答案是否定的。然而 pandoc.exe 是!

解决方案是在第 69 行的代码中添加“.exe”

if __version is None:
    if not which('pandoc.exe'):
        raise PandocMissing()

未安装“xelatex”也是如此。在第 94 行添加到文件 nbconvert/exporters/pdf.py

    cmd = which(command_list[0]+'.exe')
于 2017-11-02T22:51:28.917 回答
0

我在正确显示某些符号时遇到问题,定期下载为 pdf。所以下载为 tex jupyter nbconvert --to latex "my notebook.ipynb",用记事本做了一些调整(例如,在我的情况下,我需要这些行作为我的语言

\usepackage{tgpagella}
\usepackage[lithuanian,english]{babel}

),然后使用 . 导出为 pdf latex --output-format=pdf "my notebook.tex"

但最后,为了保留您在浏览器中看到的相同字符,我最终使用 Chrome 浏览器打印:Ctrl+P Print to pdf. 它添加了不必要的页眉和页脚,但其他一切都保持原样。不再有处理 tqdm 进度条的错误,不再有代码跳出页面等等。就那么简单。

于 2019-12-02T21:42:01.280 回答