web-dev-qa-db-fra.com

Comment convertir les cahiers ipython en PDF et HTML?

Je veux convertir mes cahiers ipython pour les imprimer, ou simplement les envoyer à d'autres au format html. J'ai remarqué qu'il existe déjà un outil pour le faire, nbconvert . Je l'ai téléchargé, mais je ne sais pas comment convertir le bloc-notes, avec nbconvert2.py car nbconvert dit que c'est obsolète. nbconvert2.py dit que j'ai besoin d'un profil pour convertir le cahier, de quoi s'agit-il? Existe une documentation sur cet outil?

34
nunzio13n
  1. Convertissez le fichier de cahier IPython en HTML.

    ipython nbconvert --to html notebook.ipynb  
    

    Cela convertira le fichier de document IPython notebook.ipynb au format de sortie html.

    Update: Pour la sortie HTML, vous devez maintenant utiliser jupyter à la place de ipython: 

    jupyter nbconvert --to html notebook.ipynb
    
  2. Convertissez le fichier html notebook.html en un fichier pdf appelé notebook.pdf. Sous Windows, Mac ou Linux, installez wkhtmltopdf . wkhtmltopdf est un utilitaire de ligne de commande permettant de convertir du code HTML en PDF à l'aide de WebKit. Vous pouvez télécharger wkhtmltopdf à partir de la page Web liée ou dans de nombreuses distributions Linux, il est disponible dans leurs dépôts. 

    wkhtmltopdf notebook.html notebook.pdf   
    
33
karel

nbconvert n'est pas encore complètement remplacé par nbconvert2, vous pouvez toujours l'utiliser si vous le souhaitez, sinon nous aurions supprimé l'exécutable. C'est juste un avertissement que nous ne corrigeons plus nbconvert1.

Ce qui suit devrait fonctionner:

./nbconvert.py --format=pdf yourfile.ipynb 

Si vous utilisez une version assez récente d'IPython, n'utilisez pas la vue d'impression, utilisez simplement la boîte de dialogue d'impression normale. Le graphe coupé en chrome est un problème connu (Chrome ne respecte pas certains CSS d'impression), et fonctionne beaucoup mieux avec Firefox, mais pas toutes les versions.

Quant à nbconvert2, il doit encore être écrit très fortement dev et docs.

Nbviewer utilise nbconvert2, donc c'est assez correct avec HTML.

Liste des profils actuellement disponibles:

$ ls -l1 profile|cut -d. -f1

base_html
blogger_html
full_html
latex_base
latex_sphinx_base
latex_sphinx_howto
latex_sphinx_manual
markdown
python
reveal
rst

Vous donner les profils existants. (Vous pouvez créer votre propre, cf future doc, ./nbconvert2.py --help-all devrait vous donner une option que vous pouvez utiliser dans votre profil.)

puis 

$ ./nbconvert2.py [profilename] --no-stdout --write=True <yourfile.ipynb>

Et il devrait écrire vos fichiers (tex) aussi longtemps que les chiffres extraits dans cwd. Oui, je sais que ce n’est pas évident et que cela changera probablement, donc pas de doc ...

La raison en est que nbconvert2 sera principalement un python library où dans le pseudo-code, vous pouvez faire:

 MyConverter = NBConverter(config=config)
 ipynb = read(ipynb_file)
 converted_files = MyConverter.convert(ipynb)
 for file in converted_files :
     write(file)

Le point d’entrée viendra plus tard, une fois l’API stabilisée.

Je soulignerai simplement que @jdfreder (profil github) travaille sur l'exportation tex/pdf/sphinx et qu'il est l'expert pour générer PDF à partir d'un fichier ipynb au moment de l'écriture.

11
Matt

De la docs :

Si vous souhaitez fournir aux autres utilisateurs une vue HTML statique ou une vue PDF de votre bloc-notes, utilisez le bouton Imprimer. Ceci ouvre une vue statique du document que vous pouvez imprimer sur PDF à l'aide des installations de votre système d'exploitation ou enregistrer dans un fichier à l'aide de l'option "Enregistrer" de votre navigateur Web (notez que, de manière générale, un fichier HTML et un répertoire appelé notebook_name_files qui contient toutes les informations de style nécessaires. Par conséquent, si vous souhaitez le partager, vous devez envoyer le répertoire avec le fichier html principal).

7
root
  1. Сохранить как HTML;
  2. Ctrl+P;
  3. Сохранить как PDF.
2
user9522821

Passez également le drapeau --execute pour obtenir le résultat

jupyter nbconvert --execute --to html notebook.ipynb
jupyter nbconvert --execute --to pdf notebook.ipynb

La meilleure pratique consiste à conserver la sortie hors de l'ordinateur portable pour le contrôle de version, voir: Utilisation des ordinateurs portables IPython sous contrôle de version

Mais ensuite, si vous ne passez pas --execute, la sortie ne sera pas présente dans le code HTML, voir aussi: Comment exécuter un bloc-notes .ipynb Jupyter à partir d'un terminal?

Pour un fragment HTML sans en-tête: Comment exporter un bloc-notes IPython au format HTML pour une publication de blog?

Testé dans Jupyter 4.4.0.

Je trouve que la méthode la plus simple pour convertir un ordinateur portable qui se trouve sur le Web au format PDF consiste à le visualiser au préalable sur le service Web nbviewer . Vous pouvez ensuite l'imprimer dans un fichier pdf. Si le portable est sur votre disque local, chargez-le d'abord dans un référentiel github et utilisez son URL pour nbviewer.

1
hlkw

Je ne parviens pas encore à faire fonctionner pdf. La documentation implique que je devrais être capable de le faire fonctionner avec du latex, alors peut-être que mon latex ne fonctionne pas. http://ipython.org/ipython-doc/rel-1.0.0/interactive/nbconvert.html $ ipython --version 1.1.0 $ ipython nbconvert --to latex --post PDF myfile.ipynb [NbConvertApp] ... raise child_exception OSError: [Errno 2] No such file or directory $ ipython nbconvert --to pdf myfile.ipynb [NbConvertApp] CRITICAL | Bad config encountered during initialization: [NbConvertApp] CRITICAL | The 'export_format' trait of a NbConvertApp instance must be any of ['custom', 'html', 'latex', 'markdown', 'python', 'rst', 'slides'] or None, but a value of u'pdf' was specified.

Cependant, HTML fonctionne très bien en utilisant 'slides', et c'est beau! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

// Update 2014-11-07Fri .: La syntaxe IPython v3 diffère, c'est plus simple; $ ipython nbconvert --to PDF myfile.ipynb Dans tous les cas, il semble que je manquais à la bibliothèque 'pdflatex'. J'enquête sur ça.

1
AnneTheAgile

Vous pouvez le faire en convertissant d'abord le bloc-notes en HTML, puis au format PDF:

Les étapes suivantes que j'ai mises en œuvre sur:

1 Enregistrer le bloc-notes au format HTML:

  1. Démarrez le bloc-notes Jupyter que vous souhaitez enregistrer au format HTML. Commencez par enregistrer le bloc-notes correctement afin que le fichier HTML contienne la dernière version enregistrée de votre code/bloc-notes. 
  2. Exécutez la commande suivante à partir du bloc-notes lui-même:

    !jupyter nbconvert --to html your_notebook_name.ipynb

Après exécution, la version HTML de votre bloc-notes sera créée et sauvegardée dans le répertoire de travail en cours. Vous verrez qu'un fichier html sera ajouté dans le répertoire en cours avec your_notebook_name.html nom

(your_notebook_name.ipynb -> your_notebook_name.html). 

2 Enregistrer le code HTML au format PDF:

  1. Ouvrez maintenant ce fichier your_notebook_name.html (cliquez dessus). Il sera ouvert dans un nouvel onglet de votre navigateur.
  2. Maintenant, allez à l'option d'impression. De là, vous pouvez enregistrer ce fichier au format PDF.

Notez que l'option d'impression offre également la possibilité de sélectionner une partie d'un bloc-notes à enregistrer au format pdf.

0
Yogesh

Je cherchais un moyen de sauvegarder des cahiers au format HTML, car chaque fois que j'essaye de télécharger au format HTML avec ma nouvelle installation de Jupyter, je reçois toujours une erreur 500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'. Curieusement, j'ai constaté que télécharger en HTML est aussi simple que:

  1. Clic gauche dans le cahier
  2. Cliquez sur "Enregistrer sous ..." dans le menu déroulant.
  3. Économisez en conséquence

Pas d'aperçu avant impression, pas d'impression, pas de conversion. Utilisation de Jupyter Version: 1.0.0. Juste une suggestion à essayer (évidemment, toutes les configurations ne sont pas identiques).

0
ralston3

Si vous utilisez sagemath cloud version, 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. 
Screenshot 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.

0
Lefteris Xris

J'ai combiné quelques réponses ci-dessus en ligne python que vous pouvez ajouter à ~/.bashrc ou ~/.zshrc pour compiler et convertir de nombreux cahiers en un seul fichier pdf

function convert_notebooks(){
  # read anything on this folder that ends on ipynb and run pdf formatting for it  
  python -c 'import os; [os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir (".") if f.endswith("ipynb")]'
  # to convert to pdf u must have installed latex and that means u have pdfjam installed
  pdfjam * 
}
0
partizanos

Autres approches suggérées:

  1. Utilisation de l'option "Imprimer puis sélectionner enregistrer en tant que pdf". à partir de votre fichier HTML entraînera perte des bords de la bordure, mise en évidence de la syntaxe, découpage des tracés, etc.

  2. Certaines autres bibliothèques se sont avérées cassées quand il s'agissait d'utiliser des versions obsolètes. 

Solution: Une meilleure option, sans problème, consiste à utiliser un convertisseur en ligne https://www.sejda.com/html-to-pdf qui convertira la version * .html de votre *. ipynb à * .pdf. 

Pas:

  1. Tout d'abord, à partir de l'interface de votre ordinateur portable Jupyter, convertissez votre * .ipynb en * .html à l'aide de 

Fichier> Télécharger en tant que> HTML (.html)

  1. Téléchargez le fichier * .html nouvellement créé dans https://www.sejda.com/html-to-pdf , puis sélectionnez l’option HTML au format PDF.

  2. Votre fichier pdf est maintenant prêt pour le téléchargement. 

  3. Vous avez maintenant des fichiers .ipynb, .html et .pdf

0
Saurabh Jain