IPython / Jupyter将笔记本保存为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上并安装了Homebrew,请打开terminalshell并安装pandoc,然后input以下命令:

brew安装pandoc

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

为了使它工作,我安装了乳胶,额外的典型乳胶和潘多克。

用Ubuntu的:

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

它需要一些时间:几个100 MB的下载。 我读的地方,你可以使用--no-install-recommends texlive和额外减less到DL。

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

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

 ipython nbconvert --to latex mynotebook.ipynb 

用TeXShop浏览latex(.tex)文件,失败的原因是缺less样式表和defs。 安装所有这些(adjustbox.sty,adjcalc.sty,trimclip.sty,collectbox.sty,tc-pgf.def,ucs.sty,uni-global.def,utf8x.def,ucsencs.def)后,工作。

但是,结果看起来有点太时髦了,我的口味。 从Safari打印html是非常糟糕的,失去了语法的颜色。 否则,它看起来不那么糟糕。 (这全部在OS X上)。

Ubuntu和Mac OSX都遇到过这个问题。 经过一番疯狂的search和审判之后,两人都被解决了。 这需要texpandoc ; 巨大的外部程序不能由Python的pip安装。

Mac OSX:使用MacPorts安装pandoc

port install pandoc

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

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

sudo apt-get install pandoc

TeXLive的完整安装将需要高达4.4 GB的磁盘。

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

我也遇到了各种各样的问题。 我不知道它是否能够提供您所需要的,但是我将我的笔记本作为HTML文件下载,然后在我的Chrome浏览器中将其提交,然后将其打印为PDF文件,并将其保存。 它捕获我所有的代码,文本和graphics。 这足够我所需要的。

这个Python脚本有GUI可以select与一个Ipython笔记本你想要转换为PDF。 wkhtmltopdf的方法是我发现的唯一方法,并提供高品质的PDF文件。 这里描述的其他方法是有问题的,语法高亮不起作用或graphics混乱。

您需要安装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() 

如果你使用sagemath云版,你可以简单地走到左边angular落,
通过LaTeXselect文件 – >下载为 – > PDF(.pdf)
如果你想检查截图。

屏幕截图将ipynb转换为pdf

如果没有任何理由,你可以尝试另一种方式。
select“文件” – >“打印预览”,然后select预览
右击 – >打印,然后select保存为PDF。

我发现的是,nbconvert / utils / pandoc.py有一个代码错误,导致我的机器的错误。 代码检查pandoc是否在您的环境variablespath中。 对于我的机器答案是否定的。 但是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')