IPython / Jupyter Problèmes de sauvegarde du cahier au format PDF

Donc, j’ai essayé de sauver un ordinateur portable jupyter au format PDF, mais je n’arrive pas à comprendre comment faire. La première chose que je tente de faire est de télécharger le fichier au format PDF, mais cela se traduit par:

nbconvert failed: PDF creating failed 

la prochaine chose que je tente est d’essayer de faire la conversion à partir de l’invite de commande comme ceci

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

mais encore une fois, cela se traduit par un message d’erreur

 ImportError: No module named 'PDF' 

et si j’essaie

 $ 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 suis coincé parce que je ne sais pas quoi faire d’autre. Quelqu’un a-t-il une idée de comment réparer ce qui ne va pas?

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

armser installer pandoc

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

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 quelques temps: plusieurs 100 Mb à télécharger. J’ai lu quelque part que vous pouvez utiliser --no-install-recommends pour texlive et extra pour réduire à la dl.

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 y a un problème lié à Github .

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

 ipython nbconvert --to latex mynotebook.ipynb 

En explorant le fichier latex (.tex) avec TeXShop, l’échec était dû à des feuilles de style et à des defs manquants. Après avoir installé tous ceux-ci (adjustbox.sty, adjcalc.sty, sortingmclip.sty, collectbox.sty, tc-pgf.def, ucs.sty, uni-global.def, utf8x.def, ucsencs.def), il a finalement fait travail.

Cependant, le résultat est un peu trop funky à mon goût. Il est dommage que l’impression du fichier HTML à partir de Safari perd la coloration de la syntaxe. Sinon, ça n’a pas l’air si mal. (Tout est sous OS X).

Ce problème a été rencontré avec Ubuntu et Mac OSX. Après une série de recherches et d’essais frénétiques, 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 le pip de Python.

Mac OSX: utilisation de l’installation MacPorts de pandoc

port install pandoc

Cela devrait prendre près d’une heure pour terminer (dans le cas habituel ). Si le problème persiste, vous devrez peut-être installer la dissortingbution MacTeX. de TeXLive.

Pour Ubuntu: installez vanilla TeXLive à partir de l’ installateur réseau – pas via apt-get . Ensuite, installez pandoc en utilisant apt-get.

sudo apt-get install pandoc

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

Pour sauver tous ces problèmes, la méthode recommandée pour utiliser IPython / Jupyter Notebook serait d’installer la dissortingbution Python Anaconda.

Ce script Python a une interface graphique pour sélectionner avec l’explorateur un carnet d’ipython que vous souhaitez convertir en pdf. L’approche de wkhtmltopdf est la seule approche que j’ai trouvée qui fonctionne bien et fournit des fichiers PDF de haute qualité. D’autres approches décrites ici sont problématiques, la mise en évidence de la syntaxe ne fonctionne pas ou les graphiques sont perturbé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() 

Si vous utilisez la version sagemath 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 voulez.

Capture d’écran Convertir ipynb en pdf

Si cela ne fonctionne pas pour une raison quelconque, vous pouvez essayer une autre manière.
sélectionnez Fichier -> Aperçu avant impression, puis sur l’aperçu
Faites un clic droit -> Imprimer, puis sélectionnez Enregistrer sous format pdf.

J’ai eu toutes sortes de problèmes pour comprendre cela. Je ne sais pas si elle fournira exactement ce dont vous avez besoin, mais j’ai téléchargé mon ordinateur portable en tant que fichier HTML, puis je l’ai tiré dans mon navigateur Chrome, puis je l’ai imprimé en tant que fichier PDF que j’ai enregistré. Il a capturé tout mon code, texte et graphiques. C’était assez bon pour ce dont j’avais besoin.

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

La solution consistait à append «.exe» au code de la ligne 69

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

La même chose vaut pour ‘xelatex’ n’est pas installé. Ajouter au fichier nbconvert / exporters / pdf.py sur la ligne 94

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

En tant que nouveau membre, je n’ai pas pu simplement append un commentaire sur le message, mais je tiens à souligner que la solution proposée par Phillip Schwartz a fonctionné pour moi. Espérons que les gens dans une situation similaire essaieront cette voie plus rapidement avec l’accent. Ne pas avoir de sauts de page a été un problème frustrant pendant un certain temps, alors je suis reconnaissant pour la discussion ci-dessus.

Comme Phillip Schwartz a déclaré: “Vous devrez installer wkhtmltopdf: [ http://wkhtmltopdf.org/downloads.html%5D%5B1%5D

et Nbconvert ”

Vous ajoutez ensuite une cellule du type “rawNBConvert” et incluez:

Cela a semblé faire l’affaire et le PDF généré a eu le saut de page aux emplacements correspondants. Cependant, vous n’avez pas besoin d’exécuter le code personnalisé, car il semble que le téléchargement du bloc-notes au format HTML, l’ouverture dans le navigateur et l’impression au format PDF fonctionnent normalement une fois ces utilitaires installés.

J’utilise Anaconda-Jupyter Notebook sur OS: Ubuntu 16.0 pour la programmation Python.

Installez Nbconvert, Pandoc et Tex:

Ouvrez un terminal et implémentez les commandes suivantes.

Installez Nbconvert: même si cela fait partie de l’écosystème Jupyter, installez-le encore une fois

 $conda install nbconvert 

Ou

 $pip install nbconvert 

Mais je vous recommande d’utiliser conda plutôt que pip si vous utilisez anaconda

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

 $sudo apt-get install pandoc 

Installer TeX: Pour convertir en PDF, nbconvert utilise le TeX. Tapez la commande suivante

 $sudo apt-get install texlive-xetex 

Après l’exécution de ces commandes, fermez les blocs-notes ouverts rafraîchissez la page d’accueil ou redémarrez le kernel du bloc-notes ouvert. Maintenant, essayez de télécharger le bloc-notes en format pdf 🙂

Note: Pour plus de détails, veuillez vous référer à la documentation officielle:
https://nbconvert.readthedocs.io/en/latest/install.html