IPython/Jupyter问题将笔记本保存为PDF

IPython/Jupyter问题将笔记本保存为PDF,pdf,ipython,jupyter,Pdf,Ipython,Jupyter,所以,我一直在尝试将jupyter笔记本保存为PDF格式,但我就是不知道怎么做。我尝试的第一件事是从“文件”菜单下载PDF文件,但这样做会导致: nbconvert failed: PDF creating failed 接下来,我将尝试从命令提示符进行如下转换 $ ipython nbconvert --to latex --post PDF MyNotebook.ipynb 但同样,这会导致一条错误消息 ImportError: No module named 'PDF' 如果我尝试

所以,我一直在尝试将jupyter笔记本保存为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'
这就是我被困的地方,因为我不知道还能做什么。
有人知道如何修复错误吗?

如果您在Mac电脑上安装了自制软件,请打开终端外壳并安装pandoc,键入以下命令:

brew安装pandoc


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

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

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

使用TeXShop浏览latex(.tex)文件时,失败是由于缺少样式表和def。在安装了所有这些(adjustbox.sty、adjcalc.sty、trimclip.sty、collectbox.sty、tc-pgf.def、ucs.sty、uni-global.def、utf8x.def、ucsencs.def)之后,它终于工作了


然而,结果看起来有点太时髦了,不合我的口味。从Safari打印html会丢失语法着色,这太糟糕了。否则,看起来就没那么糟糕了。(这些都在OSX上)。

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

Mac OSX:使用MacPorts安装pandoc

端口安装pandoc

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

对于Ubuntu:从--而不是通过apt get安装。然后使用apt-get安装pandoc

sudo-apt-get-install-pandoc

完整安装TeXLive需要高达4.4 GB的磁盘空间


为了避免所有这些麻烦,推荐使用IPython/Jupyter笔记本的方法是安装Anaconda Python发行版。

我也遇到了各种各样的问题。我不知道它是否能提供你所需要的,但我下载了我的笔记本作为一个HTML文件,然后在我的Chrome浏览器中打开,然后打印成PDF文件,我保存了下来。它捕获了我所有的代码、文本和图形。这足够满足我的需要了

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

使用ubuntu:

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

它需要一些时间:下载几个100MB。我在某个地方读到,您可以使用
--无安装建议
将texlive和extra简化为dl。

此Python脚本具有GUI,可通过浏览器选择要转换为pdf的Ipython笔记本。使用wkhtmltopdf的方法是我发现的唯一有效且提供高质量PDF的方法。这里描述的其他方法有问题,语法高亮显示不起作用,或者图形混乱

您需要安装wkhtmltopdf:

及 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()
如果您使用的是云版本,您只需转到左角,
选择文件-->通过LaTeX下载为-->Pdf(.Pdf)
如果需要,请查看屏幕截图

如果出于任何原因它不起作用,你可以尝试另一种方法。
选择文件-->打印预览,然后在预览屏幕上

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

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

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

if __version is None:
    if not which('pandoc.exe'):
        raise PandocMissing()
对于未安装的“Xeletex”,情况也是如此。 添加到第94行的文件nbconvert/exporters/pdf.py

    cmd = which(command_list[0]+'.exe')

作为一名全新的会员,我无法简单地在帖子上添加评论,但我想强调菲利普·施瓦茨提供的解决方案对我有效。希望处于类似情况的人会尽快尝试这条路,并强调这一点。在相当长一段时间内,没有分页符是一个令人沮丧的问题,因此我感谢上面的讨论

正如菲利普·施瓦茨所说: “您需要安装wkhtmltopdf:[

和Nbconvert“

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

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

我正在使用OS:Ubuntu 16.0上的Anaconda Jupyter笔记本进行Python编程

pip install nbconvert
# OR
conda install nbconvert
安装Nbconvert、Pandoc和Tex: 打开终端并在其中执行以下命令

安装Nbconvert:尽管它是Jupyter生态系统的一部分,但仍然需要再次安装它 或

但是如果你用的是蟒蛇,我建议你用蟒蛇来代替pip

安装Pandoc:因为Nbconvert使用Pandoc将标记转换为HTML以外的格式 Install TeX:对于转换为PDF,nbconvert使用TeX。键入以下命令 执行这些命令后,关闭t
$conda install nbconvert
$pip install nbconvert
$sudo apt-get install pandoc
$sudo apt-get install texlive-xetex
pip install nbconvert
# OR
conda install nbconvert
sudo apt-get install pandoc
jupyter nbconvert --to pdf MyNotebook.ipynb
pip install nbconvert
OR 
conda install nbconvert
sudo apt-get install texlive-xetex
ipython nbconvert --to pdf YOURNOTEBOOK.ipynb
sudo apt-get install pandoc
sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended pandoc
pip install -U nbconvert
\usepackage{tgpagella}
\usepackage[lithuanian,english]{babel}
sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended
pip install jupyter --upgrade
pip install --upgrade --user nbconvert