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

所以,我一直试图保存一个木星笔记本 PDF 文件,但我只是不知道如何做到这一点。我尝试的第一件事是从文件菜单下载 PDF 文件,但这样做的结果是:

nbconvert failed: PDF creating failed

接下来我尝试像这样从命令提示符进行转换

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

but again, this results in an error message

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

if I try to install pandoc (pip install pandoc), this gives me

ImportError: No module named 'ConfigParser'

这就是我被困住的地方因为我不知道还能做什么。 有人知道怎么解决问题吗?

262499 次浏览

If you are on a Mac and have Homebrew installed, open a terminal shell and install pandoc typing the command:

酿造安装潘多克

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

2015-4-22: It looks like an IPython update means that --to pdf should be used instead of --to latex --post PDF. There is a related Github 的问题.

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

ipython nbconvert --to latex mynotebook.ipynb

乳胶探索(。Tex)文件,失败的原因是缺少样式表和 def。在安装了所有这些之后(adjbox.sty、 adjcalc.sty、 trimclip.sty、 Collectbox.sty、 tc-pgf。Def ucs.sty uni-global.Def,utf8x.def,ucsencs.def) ,它终于工作了。

However, the result looks a little too funky for my taste. It is too bad that printing the html from Safari loses the syntax coloring. Otherwise, it doesn't look so bad. (This is all on OS X).

这个问题在 Ubuntu 和 Mac OSX 上都出现过。经过一系列疯狂的搜索和试验,这两个问题都得到了解决。这需要同时使用 texpandoc; Python 的 pip无法安装这两个巨型外部程序。

Mac OSX: 使用安装了 pandoc 的 MacPorts

port install pandoc

这应该需要将近一个小时才能完成(在 usual的情况下)。如果问题持续存在,则可能必须安装 MacTeX 发行版。TeXLive.

For Ubuntu: install vanilla TeXLive from the 网络安装程序 -- not through apt-get. Then install pandoc using apt-get.

sudo apt-get install pandoc

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

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

I had all kinds of problems figuring this out as well. I don't know if it will provide exactly what you need, but I downloaded my notebook as an HTML file, then pulled it up in my Chrome browser, and then printed it as a PDF file, which I saved. It captured all my code, text and graphs. It was good enough for what I needed.

To make it work, I installed latex, typical latex extra, and pandoc.

With ubuntu:

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

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

这个 Python 脚本有 GUI 可以通过浏览器选择一个你想转换成 pdf 格式的 Ipython 笔记本。Wkhtmltopdf 方法是我发现的唯一可以正常工作并提供高质量 pdf 的方法。这里描述的其他方法都有问题,语法突显不起作用,或者图表混乱。

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

转换

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()

If you are using Sagemath cloud version, you can simply go to the left corner,
选择档案-> 下载为-> 通过 LaTeX 下载 PDF (. Pdf)
如果你愿意,可以检查屏幕截图。

Screenshot Convert ipynb to pdf

如果它不工作的任何原因,你可以尝试另一种方式。
选择 File —— > Print Preview,然后在预览中打印
右击-> 打印,然后选择另存为 pdf。

我发现 nbConvert/utils/pandoc.py 有一个代码错误,导致我的机器出现错误。代码检查 pandoc 是否在环境变量路径中。对我的机器来说,答案是否定的。不管 pandoc.exe 是什么!

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

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

The same goes for 'xelatex' is not installed. 添加到第94行的 nbConvert/export/pdf.py 文件中

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

As a brand new member, I was unable to simply add a comment on the post but I want to second that the solution offered by Phillip Schwartz worked for me. Hopefully people in a similar situation will try that path sooner with the emphasis. Not having page breaks was a frustrating problem for quite a while so I am grateful for the discussion above.

正如菲利普•施瓦茨(Phillip Schwartz)所言: “您需要安装 wkhtmltopdf: [1]”rel = “ nofollow noReferrer”> http://wkhtmltopdf.org/downloads.html ][1]

和 Nb 转换”

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

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

这似乎为我做了技巧,和生成的 PDF 有页面在相应的位置中断。 不过,您不需要运行定制代码,因为一旦安装了这些实用程序,以 HTML 格式下载笔记本、在浏览器中打开并打印成 PDF 格式的“正常”路径似乎就可以工作了。

我在 OS 上使用 Anaconda-Jupiter Notebook: Ubuntu 16.0 for Python Programming。

安装 NbConvert、 Pandoc 和 Tex:

打开一个终端并在其中实现以下命令。

安装 NbConvert: 虽然它是木星生态系统的一部分,但仍然需要再次安装

$conda install nbconvert

或者

$pip install nbconvert

But I will recommend using conda instead pip if you are using anaconda

安装 Pandoc: 因为 Nbtrans 使用 Pandoc 将 Markdown 转换为 HTML 以外的格式

$sudo apt-get install pandoc

安装 TeX: 为了转换成 PDF,nbConvert 使用 TeX. Type following 命令

$sudo apt-get install texlive-xetex

执行这些命令后,关闭打开的笔记本刷新主页或重新启动打开的笔记本内核。现在尝试下载 PDF 格式的笔记本电脑:)

备注: 详情请参阅官方文件:
Https://nbconvert.readthedocs.io/en/latest/install.html

要将笔记本电脑转换为 PDF,首先需要安装 nbConvert。

pip install nbconvert
# OR
conda install nbconvert

接下来,如果您没有使用 Anaconda 或者还没有使用 Anaconda,那么您必须按照 their website或 Linux 上的说明安装 pandoc,如下所示:

sudo apt-get install pandoc

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

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

jupyter nbconvert --to pdf MyNotebook.ipynb

详情请参阅 this link

如欲将任何木星笔记本电脑转换成 PDF 格式,请遵循以下指示:

(在朱庇特笔记本里) :

Mac OS台:

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

窗户台:

Ctrl + P —— > 你会看到一个打印对话框—— > 将目的地更改为 PDF —— > 单击 print

If the above steps doesn't generate 朱庇特笔记本的完整 PDF 文件 (probably because Chrome, some times, don't print all the outputs because Jupyter make a scroll for big outputs),

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

来源:@ÂngeloPolotto

  1. 在你的木星笔记本中,点击木星笔记本顶部的 手机 enter image description here

  2. 接下来单击 全部输出-> 切换滚动删除自动滚动。

enter image description here

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

  1. 返回文章页面 是 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

对于 Ubuntu 用户,答案可以在 here中找到,我也引用一下:

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

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

此外,nbconvert是另一个通常是自动的依赖项 安装了木星。但是你可以安装它只是为了确保 激活你的虚拟环境:

pip install -U nbconvert

我有问题正确显示与正常 下载为 pdf 格式的一些符号。所以下载为 tex jupyter nbconvert --to latex "my notebook.ipynb",做了一些调整与记事本(作为一个例子,在我的情况下,我需要我的语言这些行

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

) ,然后与 latex --output-format=pdf "my notebook.tex"一起输出到 pdf 格式。

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

在任何系统中,将 ipython 笔记本电脑正确设置为 pdf/latex 的基本步骤如下

  1. 安装 nbConvert
  2. 安装潘多克
  3. 安装 Texlive

安装 nbConvert

pip install nbconvert

conda install nbconvert

安装潘多克

sudo apt-get install pandoc for Ubuntu

sudo yum install pandoc

其他人请访问 潘多克-安装

正在安装 Texlive

你可以安装推荐的软件包或者完全安装

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

`

对于其他人和全面安装 texlive 按照在 给出的说明,根据您的系统和选择。

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

  1. 收拾干净

    rm -rf /usr/local/texlive/2019

    rm -rf ~/.texlive2019

  2. 运行安装程序

    解压压缩文件

    cd /your/unpacked/directory

    perl install-tl

    输入 command: i

  3. Setting path

    插入 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

每个系统的命令可能不同,但基本步骤保持不变。

我在 Windows10系统中出现了这个错误,我按照以下三个步骤解决了这个问题:

  1. 安装 nbConvert

    安装

  2. 安装潘多克

Https://pandoc.org/installing.html

  1. 安装混合炸药

Https://miktex.org/download


此外,更新库也是有益的:

pip install jupyter --upgrade
pip install --upgrade --user nbconvert

笔记本式 pdf 安装 Python-m pip install book-as-pdf pyppeteer-install

好好利用 您还可以将它与 nbConvert 一起使用:

转换为 PDFviaHTML filename.ipynb

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

或 pip 安装笔记本-as-pdf

从笔记本 jupyter 创建 pdf

你可以尝试下面这些简单的技巧(在所有 modern browsers上都能很好地工作; 在所有最新的操作系统上—— Windows,Mac,Linux) :

  • 右键单击您的 ipynb 笔记本上的任何地方。
  • 选择 Print...。这将带您到“打印预览向导”,将显示您的 Python 笔记本的 PDF 格式。
  • 提供目标文件夹名称。单击“保存”。

瞧!

This simple hack shall ofcourse save much of your time of installing nbviewer or miktex, pandoc or LaTex, etc. converter packages. Moreover, actually this hack works in same way, like you try to save an html webpage into PDF format.