IPython / JupyterノートブックをPDFとして保存する際の問題


88

だから、私は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'

そして、これは私が他に何をすべきかわからないので私が立ち往生しているところです。誰かが間違っているものを修正する方法を知っていますか?


2
PDFを作成するには、Python以外の依存関係(つまりpandoc、およびlatex)が必要です
cel

4
つまり、この機能を使用する前に、それらをインストールする必要があります。また、Pythonパッケージではないため、pipを使用することはできません。
cel 2015年

1
pandocはHaskellで書かれています。
トーマスK

回答:


34

それを機能させるために、私はラテックス、典型的なラテックスエクストラ、そしてパンドックをインストールしました。

Ubuntuの場合:

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

ダウンロードには数100Mbかかります。--no-install-recommendstexliveとextraを使用してdlに還元できることをどこかで読みました。


9
必要な鉱山pandoctexlive-xetex
ダガード2017

ask_ubuntuでパッケージの小さなリストを見つけました。
EricDuminil18年

2
@douggardが提案したこととは別に、私もこの問題texlive-generic-extraを解決する必要がありました。texlive-xetex
pgmank

大変助かりました:)
farnazjazayeri20年

30

Macを使用していて、Homebrewがインストールされている場合は、ターミナルシェルを開き、次のコマンドを入力してpandocをインストールします

。brewinstallpandoc

しばらくお待ちください。低速のインターネット接続や古いシステムでは、インストールとコンパイルに時間がかかる場合があります。


3
これはOSX10.10で機能しました。LaTeXとPDFに変換できるようになりました。(pandocへのインストールには1分もかかりませんでした...ほとんどのコンポーネントがすでにシステムにインストールされているはずです。)ありがとうございます。
drpetermolnar 2015年

1
@drpetermolnarこれは私にとってもうまくいきました(OSX10.11.6)。2分かかりました。
timothyjgraham 2016年

1
@Akshay、コマンドは次のとおりです。ipythonnbconvert --to PDF <your Notebook> .ipynb
Andrea

@AndreaNalonコマンドは、動作していない上記のstackoverflow.com/questions/43247818/...を
Akshay Khale

OSX 10.13.06の場合、次のことを行う必要がbrew install pandocありましたbrew cask install mactex-no-gui
BUE


10

ノートブックをPDFに変換するには、最初にnbconvertをインストールする必要があります。

pip install nbconvert
# OR
conda install nbconvert

次に、Anacondaを使用していない場合、またはまだ使用していない場合は、Webサイトの指示に従うか、Linuxの場合は次のようにしpandocをインストールする必要があります。

sudo apt-get install pandoc

その後、XeTexをマシンにインストールする必要があります。

これで、IPython Notebookを保持するフォルダーに移動して、次のコマンドを実行できます。

jupyter nbconvert --to pdf MyNotebook.ipynb

詳細については、このリンクを確認してください


4

質問へのコメントが言うように、あなたはパンドックとラテックス(例えばTeXShop)を必要とするでしょう。Homebrewでpandocをインストールしましたが、1秒しかかかりませんでした。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上にあります)。


1
次の短い行は、コンパイルによって作成された中間ファイルを残さずに、PDFファイルを直接生成しました。jupyter nbconvert --to pdf filename.ipynb
llinfeng 2017年

少なくとも、HTMLをPDFに直接印刷することはそれほど悪くないように、カラーで印刷するための修正があります:github.com/jupyter/notebook/issues/840
flutefreak7

3

このPythonスクリプトには、PDFに変換するIpythonノートブックをエクスプローラーで選択するためのGUIがあります。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()

スクリプトは実際にはstackoverflow応答には少し長く、wkhtmlをラップするだけです。wkhtmlのコマンドラインオプションと例を入力するだけで、答えがより明確になると思います。
ヒューパーキンス

つまり、基本的には、を使用nbconvertしてhtmlにエクスポートしてから、を使用wkhtmltopdfしてpdfに変換します。しかし、これはあなたの答えからは明らかではありません:-)
ヒューパーキンス

だから、これを試してみました。PDFに直接エクスポートするよりも効果的に優れています。奇妙なことに、私のmathjaxの一部は(ドキュメントの先頭で)正しくレンダリングされ、その後、明白な理由もなく、ドキュメントへの約12ページのレンダリングを停止します。
ヒューパーキンス2016

3

私はAnaconda-JupyterNotebook on OS:Ubuntu 16.0 forPythonプログラミングを使用しています。

Nbconvert、Pandoc、およびTexをインストールします。

ターミナルを開き、次のコマンドを実装します。

Nbconvertをインストールします:Jupyterエコシステムの一部ですが、それでももう一度インストールします

$conda install nbconvert

または

$pip install nbconvert

ただし、anacondaを使用している場合は、pipの代わりにcondaを使用することをお勧めします

Pandocをインストールします。NbconvertはPandocを使用してマークダウンを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


2

JupyterノートブックをPDFに変換するには、以下の手順に従ってください。

Jupyterノートブックの中にいる):

上のMac OSの

コマンド+ P->印刷ダイアログボックスが表示されます->宛先をPDFとして変更-> [印刷]をクリックします

のWindows

Ctrl + P->印刷ダイアログボックスが表示されます->宛先をPDFに変更-> [印刷]をクリックします

上記の手順でJupyterノートブックの完全なPDFが生成されない場合(おそらくChromeは、Jupyterが大きな出力用にスクロールするため、すべての出力を印刷しない場合があります)、

メニューの自動スクロールを削除するには、以下の手順を実行してみてください:-

クレジット:@ÂngeloPolotto

  1. Jupyter Notebookで、jupyterNotebookの上部にある [セル]をクリックしますここに画像の説明を入力してください

  2. 次に、[すべての出力] -> [スクロールの切り替え]をクリックして、自動スクロールを削除します。

ここに画像の説明を入力してください


同意しますが、Jupyterが大きな出力用にスクロールを作成するため、Chromeがすべての出力を印刷しない場合があります。メニューの[セル]-> [すべての出力]
アンジェロポロット

この情報を回答に追加できますか?これは、より多くのユーザーにとって非常に役立ちます。
アンジェロポロット

1
はい@ÂngeloPolotto、私は私の答えにあなたの情報を追加しました。
MobileDev

1

この問題は、UbuntuとMacOSXの両方で発生しました。必死の一連の検索と試行の後、両方とも解決されました。これは、両方を必要texpandoc。両方のジャンボ外部プログラムをPythonでインストールすることはできませんpip

Mac OSX:pandocのMacPortsインストールを使用

port install pandoc

これが完了するまでに1時間近くかかるはずです(通常の場合)。問題が解決しない場合は、MacTeXディストリビューションをインストールする必要があるかもしれません。TeXLiveの。

Ubuntuの場合:からバニラTeXLiveをインストールするネットワークインストーラ-ではないapt-getを通過。次に、apt-getを使用してpandocをインストールします。

sudo apt-get install pandoc

TeXLiveを完全にインストールするには、ディスクに最大4.4GBが必要です。

このすべての問題を回避するために、IPython / Jupyter Notebookを使用するための推奨される方法は、AnacondaPythonディストリビューションをインストールすることです。


1

私もこれを理解するのにいろいろな問題を抱えていました。必要なものが正確に提供されるかどうかはわかりませんが、ノートブックをHTMLファイルとしてダウンロードし、Chromeブラウザーでプルアップして、PDFファイルとして印刷して保存しました。それは私のすべてのコード、テキスト、グラフをキャプチャしました。必要なものには十分でした。


1
私の場合、HTMLは長すぎても、ページごとに1つのセルを配置します。だから解決策ではない
Juh_ 2016

1

sagemathクラウドバージョンを使用している場合は、左隅に移動し、
[ファイル]-> [名前付けてダウンロード]-> [LaTeX経由のPDF(.pdf)]を選択します
。必要に応じてスクリーンショットを確認してください。

スクリーンショットipynbをpdfに変換する

何らかの理由で機能しない場合は、別の方法を試すことができます。
[ファイル]-> [印刷プレビュー
]を選択し、プレビューで 右クリック-> [印刷]を選択して、[PDFとして保存]を選択します。


それでも問題が解決しない場合は、コマンドラインでnbconvertを直接使用して、ラテックスの問題の原因を正確に確認できます。
ウィリアムスタイン

1

真新しいメンバーとして、私は単に投稿にコメントを追加することはできませんでしたが、フィリップシュワルツによって提供されたソリューションが私のために働いたことを2番目にしたいと思います。うまくいけば、同様の状況にある人々は、強調してその道をより早く試みるでしょう。改ページがないことは、かなり長い間苛立たしい問題でしたので、上記の議論に感謝します。

Phillip Schwartzが言ったように、「wkhtmltopdfをインストールする必要があります:[ http://wkhtmltopdf.org/downloads.html] [ 1]

およびNbconvert "

次に、「rawNBConvert」タイプのセルを追加し、次のものを含めます。

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

それは私にとってはうまくいったようで、生成されたPDFは対応する場所で改ページがありました。ただし、カスタムコードを実行する必要はありません。ノートブックをHTMLとしてダウンロードし、ブラウザで開き、PDFに印刷するという「通常の」パスは、これらのユーティリティをインストールすると機能するようです。


1

.ipynbをpdfに変換するには、システムに2つのコンポーネントが含まれている必要があります。

  1. nbconvertjupyterの一部であり、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

1

Notebook-as-pdfInstall python -m pip install Notebook-as-pdf pyppeteer-install

使用するnbconvertでも使用できます。

jupyter-nbconvert --to PDFviaHTML filename.ipynb

これにより、filename.pdfというファイルが作成されます。

またはpipinstallnotebook-as-pdf

ノートブックjupyter-nbconvert-toPDFviaHTMLからPDFを作成する


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

0

Ubuntuユーザーの場合、答えはここにあります。私もそれを引用します:

最も可能性の高い原因は、適切な依存関係をインストールしていないことです。ノートブックをPDFとして保存するには、UbuntuシステムにLaTeXファイルとXeTeXファイルの変換に関するいくつかのパッケージをインストールする必要があります。次の方法でインストールできます。

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

また、nbconvert通常はjupyterで自動的にインストールされる別の依存関係もあります。ただし、仮想環境をアクティブ化しながら、念のためにインストールすることができます。

pip install -U nbconvert

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プログレスバーの処理中にエラーが発生したり、ページからコードが出たりすることはありません。そのような単純な。


0

どのシステムでも、ipythonノートブックをpdf / latexに変換するためにnbconvertを正しくセットアップするための基本的な手順は次のとおりです。

  1. nbconvertをインストールします
  2. pandocをインストールします
  3. Texliveをインストールします

nbconvertのインストール

pip install nbconvert

または conda install nbconvert

pandocのインストール

sudo apt-get install pandoc Ubuntu用

またはsudo yum install pandocCentOSの場合

他の人はpandoc-installationにアクセスしてください

texliveのインストール

推奨パッケージまたはフルインストールをインストールできます。Ubuntuの場合

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

`

他の人のためにそしてtexliveを完全にインストールするためにあなたのシステムと選択に従ってtugで与えられた指示に従ってください 。

tug-texlive-downloadからtar.gzファイルを ダウンロードしTeXLive-クイックインストールの指示に従いました 。インストール手順の概要:

  1. 掃除

    rm -rf /usr/local/texlive/2019

    rm -rf ~/.texlive2019

  2. インストーラーを実行する

    zipファイルを解凍します

    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

コマンドはシステムによって異なる場合がありますが、基本的な手順は同じです。


0

Windows 10でこのエラーが発生しました。次の3つの手順を実行すると、問題が解決しました。

  1. nbconvertをインストールします

    pip install nbconvert

  2. pandocをインストールします

https://pandoc.org/installing.html

  1. miktexをインストールする

https://miktex.org/download


また、ライブラリを更新することもお勧めします。

pip install jupyter --upgrade
pip install --upgrade --user nbconvert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.