web-dev-qa-db-fra.com

IPython / Jupyter Problèmes lors de l’enregistrement du bloc-notes au format PDF

J'ai donc essayé de sauvegarder un cahier Jupyter sous le nom de PDF, mais je n'arrive pas à comprendre comment faire cela. La première chose que j'essaye est de télécharger le fichier PDF dans le menu Fichier, mais cela se traduit par:

nbconvert failed: PDF creating failed

la prochaine chose que j'essaie est d'essayer de faire la conversion de l'invite de commande comme ceci

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

mais encore une fois, cela entraîne un message d'erreur

ImportError: No module named 'PDF'

et si j'essaye

$ ipython nbconvert --to latex MyNotebook.ipynb 

cela se traduit par

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

si j'essaie d'installer pandoc (pip install pandoc), cela me donne

ImportError: No module named 'ConfigParser'

et c’est là que je reste coincé parce que je ne sais tout simplement pas quoi faire. Quelqu'un a une idée de comment réparer ce qui ne va pas?

67
Isak Baizley

Si vous êtes sur un Mac et que Homebrew est installé, ouvrez un terminal Shell et installez pandoc en tapant la commande suivante:

brassage installer pandoc

soyez patient, le temps d'installation et de compilation peut prendre un certain temps avec des connexions Internet lentes ou des systèmes plus anciens.

26
Andrea

Pour que cela fonctionne, j'ai installé du latex, du latex typique et du pandoc.

Avec Ubuntu:

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

cela prend du temps: plusieurs 100 Mo à télécharger. J'ai lu quelque part que vous pouvez utiliser --no-install-recommends pour texlive et extra pour réduire au dl.

22
Juh_

2015-4-22: Il semble qu'une mise à jour IPython signifie que --to pdf devrait être utilisé à la place de --to latex --post PDF. Il existe un connexe numéro de Github .

11
Scott

Pour convertir des blocs-notes en PDF, vous devez d'abord installer nbconvert.

pip install nbconvert
# OR
conda install nbconvert

Ensuite, si vous n’utilisez pas Anaconda ou ne l’avez pas déjà fait, vous devez installer pandoc en suivant les instructions sur leur site Web ou, sous Linux, comme suit:

Sudo apt-get install pandoc

Après cela, vous devez installer XeTex sur votre ordinateur:

Vous pouvez maintenant accéder au dossier qui contient votre ordinateur portable IPython et exécuter la commande suivante:

jupyter nbconvert --to pdf MyNotebook.ipynb

pour plus de référence, s'il vous plaît vérifier ce lien .

7
Tanmay Lata

Comme le disent les commentaires à la question, vous aurez besoin de pandoc et de latex (TeXShop, par exemple). J'ai installé pandoc avec Homebrew, cela ne m'a pris qu'une seconde. Avec pandoc et TeXShop, je pouvais générer du latex mais pas du pdf (en ligne de commande).

ipython nbconvert --to latex mynotebook.ipynb

En explorant le fichier latex (.tex) avec TeXShop, l'échec était dû à l'absence de feuilles de style et de définitions. Après avoir installé tous ces éléments (adjustbox.sty, adjcalc.sty, trimclip.sty, collectbox.sty, tc-pgf.def, ucs.sty, uni-global.def, utf8x.def, ucsencs.def), il s’est finalement arrêté travail.

Cependant, le résultat est un peu trop funky à mon goût. Il est dommage que l'impression du code HTML à partir de Safari perde la coloration syntaxique. Sinon, ça n'a pas l'air si mal. (Ceci est tout sur OS X).

4
telliott99

J'utilise Anaconda-Jupyter Notebook sur système d'exploitation: Ubuntu 16.0 pour la programmation Python.

Installez Nbconvert, Pandoc et Tex:

Ouvrez un terminal et implémentez les commandes suivantes.

Installez Nbconvert: bien que cela fasse partie de l'écosystème de Jupyter, installez-le encore une fois

$conda install nbconvert

Ou

$pip install nbconvert

Mais je recommanderai d'utiliser conda pip à la place si vous utilisez anaconda

Installez Pandoc: puisque Nbconvert utilise Pandoc pour convertir les balises vers des formats autres que HTML. Tapez la commande suivante

$Sudo apt-get install pandoc

Installez TeX: pour convertir en PDF, nbconvert utilise TeX. Tapez la commande suivante

$Sudo apt-get install texlive-xetex

Après l'exécution de ces commandes, fermez les blocs-notes ouverts, actualisez la page d'accueil ou redémarrez le noyau du bloc-notes ouvert. Maintenant, essayez de télécharger le cahier au format pdf :)

Remarque: pour plus de détails, veuillez vous reporter à la documentation officielle:
https://nbconvert.readthedocs.io/en/latest/install.html

3
Yogesh

Ce script Python dispose d'une interface graphique permettant de sélectionner avec l'Explorateur un bloc-notes Ipython que vous souhaitez convertir en PDF. L'approche avec wkhtmltopdf est la seule approche que j'ai trouvée qui fonctionne bien et fournit des fichiers PDF de haute qualité. Les autres approches décrites ici sont problématiques, la surbrillance syntaxique ne fonctionne pas ou les graphiques sont gâchés.

Vous devrez installer wkhtmltopdf: http://wkhtmltopdf.org/downloads.html

et Nbconvert

pip install nbconvert
# OR
conda install nbconvert

Script 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()
2
Philipp Schwarz

Pour convertir un ordinateur portable Jupyter au format PDF, veuillez suivre les instructions ci-dessous:

( Soyez dans le cahier Jupyter ):

Sur Mac OS :

commande + P -> vous obtiendrez une boîte de dialogue d'impression -> changer la destination en tant que PDF -> Cliquez sur Imprimer

Sur Windows :

Ctrl + P -> vous obtiendrez une boîte de dialogue d'impression -> changer la destination en tant que PDF -> Cliquez sur Imprimer

Si les étapes ci-dessus ne génèrent pas la totalité du PDF du bloc-notes Jupyter (probablement parce que Chrome ne s'imprime parfois pas toutes les sorties car Jupyter fait un parchemin pour les grandes sorties),

Essayez d'effectuer les opérations ci-dessous pour supprimer le défilement automatique dans le menu : -

Crédits: @ ÂngeloPolotto

  1. Dans votre ordinateur portable Jupyter, cliquez sur Cellule en haut du cahier Jupyter enter image description here

  2. Cliquez ensuite sur Toutes les sorties -> Basculez le défilement pour supprimer le défilement automatique.

enter image description here

2
Akshay Ramesh

Si vous utilisez sagemath version cloud, vous pouvez simplement aller dans le coin gauche,
sélectionnez Fichier -> Télécharger sous -> Pdf via LaTeX (.pdf)
Vérifiez la capture d'écran si vous le souhaitez.

Capture d'écran convertir ipynb en pdf

Si cela ne fonctionne pas pour une raison quelconque, vous pouvez essayer une autre façon.
sélectionnez Fichier -> Aperçu avant impression, puis sur l'aperçu
cliquez avec le bouton droit de la souris sur -> Imprimer, puis sélectionnez enregistrer en tant que pdf.

1
Lefteris Xris

Ce problème a été rencontré avec Ubuntu et Mac OSX. Après une série effrénée de recherches et d’essais, les deux ont été résolus. Cela nécessite à la fois tex et pandoc; Les deux programmes externes jumbo ne peuvent pas être installés par pip de Python.

Mac OSX: utilisation de MacPorts pour l'installation de pandoc

port install pandoc

Cela devrait prendre presque une heure (dans le cas habituel). Si le problème persiste, vous devrez peut-être installer MacTeX distro. de TeXLive.

Pour Ubuntu: installez Vanilla TeXLive à partir du programme d'installation résea - et non via apt-get . Puis installez pandoc en utilisant apt-get.

Sudo apt-get install pandoc

Une installation complète de TeXLive nécessiterait jusqu'à 4,4 Go sur disque.

Pour éviter tous ces problèmes, la méthode recommandée pour utiliser IPython/Jupyter Notebook consiste à installer Anaconda Python distribution.

1
Ébe Isaac

Ce que j’ai trouvé c’est que nbconvert/utils/pandoc.py avait un bogue de code qui a entraîné l’erreur pour ma machine. Le code vérifie si pandoc est dans le chemin de vos variables d'environnement. Pour ma machine, la réponse est non. Cependant, pandoc.exe est!

La solution a été d’ajouter ".exe" au code de la ligne 69.

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

Il en va de même pour 'xelatex' n'est pas installé. Ajouter au fichier nbconvert/exporters/pdf.py à la ligne 94

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

En tant que tout nouveau membre, je n'ai pas pu simplement ajouter un commentaire sur le post, mais je tiens également à dire que la solution proposée par Phillip Schwartz a fonctionné pour moi. Espérons que les personnes dans une situation similaire essayeront cette voie plus tôt avec l'accent. Ne pas avoir de sauts de page était un problème frustrant pendant un bon bout de temps, donc je suis reconnaissant pour la discussion ci-dessus.

Comme Phillip Schwartz a déclaré: "Vous devrez installer wkhtmltopdf: [ http://wkhtmltopdf.org/downloads.html] [1]

et Nbconvert "

Vous ajoutez ensuite une cellule du type "rawNBConvert" et incluez:

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

Cela semblait faire l'affaire pour moi, et le PDF généré avait le saut de page aux emplacements correspondants. Cependant, vous n'avez pas besoin d'exécuter le code personnalisé, car il semble que le chemin "normal" de téléchargement du bloc-notes au format HTML, d'ouverture dans le navigateur et d'impression sur PDF fonctionne une fois ces utilitaires installés.

0
Ody

J'ai eu toutes sortes de problèmes pour comprendre cela aussi. Je ne sais pas s'il vous fournira exactement ce dont vous avez besoin, mais j'ai téléchargé mon ordinateur portable sous forme de fichier HTML, puis je l'ai extrait dans mon navigateur Chrome, puis je l'ai imprimé en tant que PDF fichier que j'ai sauvegardé. Il a capturé tout mon code, texte et graphiques. C'était assez bien pour ce dont j'avais besoin.

0
twin_pilgrim

Pour convertir .IPYNB en PDF, votre système doit contenir 2 composants,

  1. nbconvert: Fait partie de jupyter permet de convertir ipynb en pdf

    pip install nbconvert
    OR 
    conda install nbconvert
    
  2. XeTeX: Convertissez ipynb au format .tex puis convertissez au format pdf.

    Sudo apt-get install texlive-xetex
    

Ensuite, vous pouvez utiliser la commande ci-dessous pour convertir en PDF,

ipython nbconvert --to pdf YOURNOTEBOOK.ipynb

Au cas où cela ne fonctionnerait pas, installez pandoc et réessayez.

Sudo apt-get install pandoc
0
Pritesh Gohil