Wie konvertiere ich IPython-Notizbücher in PDF und HTML?

89

Ich möchte meine ipython-Notizbücher konvertieren, um sie zu drucken, oder sie einfach im HTML-Format senden. Mir ist aufgefallen, dass es dafür bereits ein Tool gibt, nbconvert . Obwohl ich es heruntergeladen habe, habe ich keine Ahnung, wie ich das Notebook mit nbconvert2.py konvertieren soll, da nbconvert angibt, dass es veraltet ist. nbconvert2.py sagt, dass ich ein Profil brauche, um das Notebook zu konvertieren. Was ist das? Gibt es eine Dokumentation zu diesem Tool?

nunzio13n
quelle

Antworten:

96

Wenn Sie LaTeX installiert haben, können Sie es als PDF direkt vom Jupyter-Notizbuch mit Datei -> Download als -> PDF über LaTeX (.pdf) herunterladen . Befolgen Sie andernfalls diese beiden Schritte.

  1. Für die HTML-Ausgabe sollten Sie jetzt Jupyter anstelle von IPython verwenden und Datei -> Herunterladen als -> HTML (.html) auswählen oder den folgenden Befehl ausführen:

    jupyter nbconvert --to html notebook.ipynb  
    

    Dadurch wird die Jupyter-Dokumentdatei notebook.ipynb in das HTML-Ausgabeformat konvertiert.

    Google Colaboratory ist Googles kostenlose Jupyter-Notebook-Umgebung, die keine Einrichtung erfordert und vollständig in der Cloud ausgeführt wird. Wenn Sie Google Colab verwenden, sind die Befehle identisch. In Google Colab können Sie jedoch nur die Formate .ipynb oder .py herunterladen.

  2. Konvertieren Sie die HTML-Datei notebook.html in eine PDF-Datei namens notebook.pdf. Installieren Sie unter Windows, Mac oder Linux wkhtmltopdf . wkhtmltopdf ist ein Befehlszeilenprogramm zum Konvertieren von HTML in PDF mit WebKit. Sie können wkhtmltopdf von der verlinkten Webseite herunterladen oder in vielen Linux-Distributionen in ihren Repositories finden.

    wkhtmltopdf notebook.html notebook.pdf   
    

Ursprüngliche (inzwischen fast veraltete) Revision: Konvertieren Sie die IPython-Notebook-Datei in HTML.

ipython nbconvert --to html notebook.ipynb

Karel
quelle
1
Alles wurde auf einer Seite zusammengefasst -__-
htafoya
2
Für die HTML-Ausgabe sollten Sie jetzt jupyteranstelle von ipythonzBjupyter nbconvert --to html notebook.ipynb
AlexG
Damit dies funktioniert, sollten jupyter_contrib_nbextensions installiert sein.
CharlesG
Nach der obigen Antwort benötigen Sie wkhtmltopdf. Um es in Ubuntu 14.04 zu installieren, funktionierte dies für mich gist.github.com/brunogaspar/bd89079245923c04be6b0f92af431c10
Pradeep Singh
3
Sie können die Website auch als PDF ausdrucken.
AndiCover
17

Aus den Dokumenten :

Wenn Sie anderen eine statische HTML- oder PDF-Ansicht Ihres Notizbuchs bereitstellen möchten, verwenden Sie die Schaltfläche Drucken. Dadurch wird eine statische Ansicht des Dokuments geöffnet, die Sie mithilfe der Funktionen Ihres Betriebssystems als PDF drucken oder mit der Option "Speichern" Ihres Webbrowsers in einer Datei speichern können (beachten Sie, dass in der Regel sowohl eine HTML-Datei als auch ein Verzeichnis mit dem Namen "PDF" erstellt werden daneben notebook_name_files, die alle erforderlichen Stilinformationen enthalten. Wenn Sie diese also freigeben möchten, müssen Sie das Verzeichnis zusammen mit der Haupt-HTML-Datei senden.

Wurzel
quelle
1
Vielen Dank! Die HTML-Version ist wirklich gut und sehr einfach zu bekommen. Das PDF ist jedoch nicht gut. Die Grafiken werden in zwei Teile geschnitten, wenn sie sich zwischen zwei Seiten befinden, und die lange Codezeile wird ebenfalls geschnitten.
nunzio13n
@ nunzio13n - Na wenigstens hast du das HTML ... Ich habe es nicht benutzt, nbconvrtalso kann ich dir dabei nicht wirklich helfen. Hoffentlich kommt jemand, der mitgekommen ist ...
root
3
Toter Link. Außerdem habe ich keine Drucktaste in meinem Notizbuch.
Pat
Die Verwendung von print in Ihrem Browser mit CTRL+ Pfunktioniert.
Levi Baguley
13

nbconvert ist noch nicht vollständig durch nbconvert2 ersetzt. Sie können es weiterhin verwenden, wenn Sie dies wünschen. Andernfalls hätten wir die ausführbare Datei entfernt. Es ist nur eine Warnung, dass wir nbconvert1 nicht mehr bugfixieren.

Folgendes sollte funktionieren:

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

Wenn Sie sich in einer IPython-Version befinden, die aktuell genug ist, verwenden Sie nicht die Druckansicht, sondern nur den normalen Druckdialog. In Chrom geschnittene Grafiken sind ein bekanntes Problem (Chrome respektiert einige Druck-CSS nicht) und funktionieren mit Firefox viel besser, nicht alle Versionen noch.

Was nbconvert2 betrifft, so ist es immer noch sehr dev und es müssen Dokumente geschrieben werden.

Nbviewer verwendet nbconvert2, daher ist es mit HTML ziemlich anständig.

Liste der aktuell verfügbaren Profile:

$ 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

Geben Sie die vorhandenen Profile. (Sie können ein eigenes, zukünftiges Dokument erstellen, ./nbconvert2.py --help-alldas Ihnen eine Option bietet, die Sie in Ihrem Profil verwenden können.)

dann

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

Und es sollte Ihre (tex) Dateien schreiben, solange die Zahlen in cwd extrahiert werden. Ja, ich weiß, dass dies nicht offensichtlich ist, und es wird sich wahrscheinlich ändern, daher kein Dokument ...

Der Grund dafür ist, dass nbconvert2 hauptsächlich eine Python- Bibliothek ist, in der Sie im Pseudocode Folgendes tun können:

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

Der Einstiegspunkt wird später kommen, sobald die API stabilisiert ist.

Ich möchte nur darauf hinweisen, dass @jdfreder (Github-Profil) am tex / pdf / sphinx-Export arbeitet und der Experte ist, der zum Zeitpunkt dieses Schreibens PDF aus einer ipynb-Datei generiert.

Matt
quelle
Vielen Dank, Sie haben mehr von meinen Zweifeln geklärt. Aber nbconvert2.py funktioniert immer noch nicht, weil es sogar eine [NbconvertApp] Config file for profile './profile/latex_base.nbcv' not found, giving upKonfigurationsdatei benötigt. Und nbconvert gibt mir nicht direkt eine PDF-Datei, sondern eine Latex-Datei, und ich muss die * .tex-Datei mit pdflatex verarbeiten, aber es ist eine gute Lösung.
nunzio13n
Können Sie ein Problem auf Github eröffnen, und wir werden das klären.
Matt
Wahrscheinlich handelt es sich nicht um ein Problem von nbconvert, aber es liegt an meinem mangelnden Wissen über. Wenn die Dokumentation herauskommt, ist vielleicht alles klar, ipython mit dem Notebook und nbconvert sind eine sehr gute Arbeit, und ich bin sicher, dass dies bald eine Dokumentation sein wird.
nunzio13n
Dies scheint keine Ipython-Nummerierung zu verlieren / zu geben (hatte gehofft, dass es mit der Ipython-Direktive konvertiert werden würde).
Andy Hayden
Gibt es eine API-Version, um dies zu ermöglichen? Ich sehe das IPython.nbconvert.exporters.latexund frage mich, ob es eine Möglichkeit gibt, eine PDF-Ausgabe ohne das Befehlszeilentool zu erhalten. Welche Abhängigkeiten gibt es, damit es funktioniert? (Pandoc, Tetex, andere Dinge?) Und ich nehme an, es ist nicht plattformübergreifend (funktioniert nicht unter Windows). TIA!
IanSR
11

Übergeben Sie auch das --executeFlag, um die Ausgabe zu erhalten

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

Die beste Vorgehensweise besteht darin, die Ausgabe zur Versionskontrolle aus dem Notebook herauszuhalten, siehe: Verwenden von IPython-Notebooks unter Versionskontrolle

Wenn Sie jedoch nicht bestehen --execute, ist die Ausgabe nicht im HTML- Code vorhanden. Siehe auch: Ausführen eines .ipynb Jupyter-Notizbuchs vom Terminal aus?

Für ein HTML-Fragment ohne Header: Wie exportiere ich ein IPython-Notizbuch für einen Blog-Beitrag in HTML?

Getestet in Jupyter 4.4.0.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
9

Für diejenigen, die wkhtmltopdf nicht auf ihren Systemen installieren können, besteht eine andere Methode als viele, die bereits in den Antworten auf diese Frage erwähnt wurden, darin, die Datei einfach als HTML-Datei vom Jupyter-Notizbuch herunterzuladen , in HTML in PDF hochzuladen und herunterzuladen die konvertierten pdf-Dateien von dort.

Hier haben Sie Ihr IPython-Notizbuch (.ipynb) in die Formate PDF (.pdf) und HTML (.html) konvertiert.

Shayan Shafiq
quelle
8
  1. Als HTML speichern ;
  2. Ctrl+ P;
  3. Als PDF speichern .
סטנלי גרונן
quelle
4

Nur diese Antwort wäre für Sie nützlich, wenn Ihr Dokument mathematische, wissenschaftliche Formeln enthält. Auch wenn Sie sie nicht haben, funktioniert es gut.

GUI Weg

  • Öffnen Sie das Jupyter-Notizbuch Öffnen Sie das Jupyter-Notizbuch
  • Gehen Sie über LaTeX zu Dateien> Herunterladen als> HTML oder PDF Gehen Sie über LaTeX zu Dateien> Herunterladen als> HTML oder PDF

  • Überprüfen Sie dann Ihren Download-Ordner auf die Datei. PS: Wenn LaTeX beim Kompilieren der PDF-Datei Fehler hatte, schlägt dies fehl. Laden Sie in diesem Fall die HTML-Datei herunter und konvertieren Sie den HTML-Code mit http://webpagetopdf.com/ oder einem ähnlichen Dienst in PDF.

Befehlszeilenmethode

  • Öffnen Sie das Terminal
  • Navigieren Sie zu dem Ordner, der das Jupyter-Notizbuch enthält
  • Geben Sie "jupyter nbconvert --to pdf your_jupyter_notebook.ipynb" ein. PS: Wenn dies fehlschlägt, versuchen Sie es mit Yogeshs Antwort
Tejas Shetty
quelle
4

Wenn Sie die Sagemath Cloud-Version verwenden, können Sie einfach in die linke Ecke gehen und
Datei → Herunterladen als → PDF über LaTeX (.pdf) auswählen.
Überprüfen Sie den Screenshot, wenn Sie möchten.
Screenshot Ipynb in PDF konvertieren

Wenn es aus irgendeinem Grund nicht funktioniert, können Sie es auf andere Weise versuchen.
Wählen Sie Datei → Druckvorschau und
klicken Sie dann in der Vorschau mit der rechten Maustaste auf → Drucken und wählen Sie dann Als PDF speichern.

Lefteris Xris
quelle
3

Ich kann PDF noch nicht zum Laufen bringen. Die Dokumente implizieren, dass ich in der Lage sein sollte, es mit Latex zum Laufen zu bringen, also funktioniert mein Latex möglicherweise nicht. 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.

HTML funktioniert jedoch hervorragend mit "Folien" und es ist wunderschön! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

// Update 2014-11-07Fri.: Die IPython v3-Syntax unterscheidet sich, es ist einfacher; $ ipython nbconvert --to PDF myfile.ipynb In allen Fällen scheint mir die Bibliothek 'pdflatex' gefehlt zu haben. Ich untersuche das.

AnneTheAgile
quelle
versuchen Sie: $ ipython nbconvert your_file.ipynb --to latex --post PDF
moldovean
ty @moldovean, weil er mich angerufen hat, um mir das noch einmal anzusehen. Mehr googeln enthüllte nur das Problem. Die Reihenfolge der Argumente spielte keine Rolle, ich bekam immer noch "Keine solche Datei oder kein solches Verzeichnis".
AnneTheAgile
Das ist ein interessantes Thema. Vielleicht ... nur vielleicht hilft die Neuinstallation von Ipython. Ich weiß es wirklich nicht :(
Moldovean
@moldovean, es stellt sich heraus, dass bestimmte Bibliotheken erforderlich sind, aber nicht von ipynb installiert werden. In diesem Fall brauche ich mindestens pdflatex auf meinem Weg. Siehe meine PR, um die Fehlerprüfung zu verbessern, github.com/ipython/ipython/pull/6884
AnneTheAgile
3

Sie können dies tun, indem Sie zuerst das Notizbuch in HTML und dann in das PDF-Format konvertieren:

Folgende Schritte habe ich implementiert: Betriebssystem: Ubuntu, Anaconda-Jupyter-Notebook, Python 3

1 Speichern Sie das Notizbuch im HTML-Format:

  1. Starten Sie das Jupyter-Notizbuch, das Sie im HTML-Format speichern möchten. Speichern Sie zuerst das Notizbuch ordnungsgemäß, damit die HTML-Datei eine zuletzt gespeicherte Version Ihres Codes / Notizbuchs enthält.

  2. Führen Sie den folgenden Befehl vom Notizbuch aus aus:

    !jupyter nbconvert --to html your_notebook_name.ipynb

Nach der Ausführung wird eine HTML-Version Ihres Notebooks erstellt und im aktuellen Arbeitsverzeichnis gespeichert. Sie werden sehen, dass eine HTML-Datei mit dem your_notebook_name.htmlNamen zum aktuellen Verzeichnis hinzugefügt wird

( your_notebook_name.ipynb-> your_notebook_name.html).

2 Speichern Sie HTML als PDF:

  1. Öffnen Sie nun diese your_notebook_name.htmlDatei (klicken Sie darauf). Es wird in einem neuen Tab Ihres Browsers geöffnet.
  2. Gehen Sie nun zur Druckoption. Von hier aus können Sie diese Datei im PDF-Dateiformat speichern.

Beachten Sie, dass wir über die Druckoption auch die Flexibilität haben, einen Teil eines Notizbuchs auszuwählen, der im PDF-Format gespeichert werden soll.

Yogesh
quelle
2

Ich habe nach einer Möglichkeit gesucht, Notebooks als HTML zu speichern, da immer dann, wenn ich versuche, sie mit meiner neuen Jupyter-Installation als HTML herunterzuladen, eine 500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'Fehlermeldung angezeigt wird. Seltsamerweise habe ich festgestellt, dass das Herunterladen als HTML so einfach ist wie:

  1. Klicken Sie mit der linken Maustaste in das Notizbuch
  2. Klicken Sie im Dropdown-Menü auf "Speichern unter ..."
  3. Speichern Sie entsprechend

Keine Druckvorschau, kein Druck, kein nbconvert. Jupyter verwenden Version: 1.0.0. Nur ein Vorschlag zum Ausprobieren (offensichtlich sind nicht alle Setups gleich).

semore_1267
quelle
2

Ich finde, dass die einfachste Methode, ein Notizbuch, das sich im Web befindet, in PDF umzuwandeln, darin besteht, es zuerst im Webdienst nbviewer anzuzeigen . Sie können es dann in eine PDF-Datei drucken. Wenn sich das Notebook auf Ihrem lokalen Laufwerk befindet, laden Sie es zuerst in ein Github-Repository hoch und verwenden Sie seine URL für nbviewer.

hlkw
quelle
2

Andere vorgeschlagene Ansätze:

  1. Verwenden Sie "Drucken" und wählen Sie "Als PDF speichern". aus Ihrer HTML-Datei führt zum Verlust von Randkanten, Hervorheben der Syntax, Trimmen von Plots usw.

  2. Einige andere Bibliotheken haben sich als defekt erwiesen, wenn es um die Verwendung veralteter Versionen geht.

Lösung: Eine bessere und problemlose Option ist die Verwendung eines Online-Konverters https://www.sejda.com/html-to-pdf, der die * .html-Version Ihres * .ipynb in * .pdf konvertiert.

Schritte:

  1. Konvertieren Sie zunächst von Ihrer Jupyter-Notebook-Oberfläche aus * .ipynb in * .html mit

Datei> Herunterladen als> HTML (.html)

  1. Laden Sie die neu erstellte * .html-Datei auf https://www.sejda.com/html-to-pdf hoch und wählen Sie dann die Option HTML in PDF.

  2. Ihre PDF-Datei steht jetzt zum Download bereit.

  3. Sie haben jetzt .ipynb-, .html- und .pdf-Dateien

Saurabh Jain
quelle
2

Ich habe oben einige Antworten in Inline-Python kombiniert, die Sie zu ~ / .bashrc oder ~ / .zshrc hinzufügen können, um viele Notizbücher zu kompilieren und in eine einzelne PDF-Datei zu konvertieren

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 * 
}
Partizanos
quelle
2

Die einfache Python-Version von Partizanos 'Antwort .

  • Öffnen Sie Terminal (Linux, MacOS) oder zeigen Sie an, wo Sie Python-Dateien unter Windows ausführen können
  • Geben Sie den folgenden Code in eine .py-Datei ein (z. B. tejas.py).
import os

[os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir(".") if f.endswith("ipynb")]
  • Navigieren Sie zu dem Ordner mit den Jupiter-Notizbüchern
  • Stellen Sie sicher, dass sich tejas.py im aktuellen Ordner befindet. Kopieren Sie es gegebenenfalls in den aktuellen Ordner.
  • Geben Sie "python tejas.py" ein.
  • Job erledigt
Tejas Shetty
quelle
Wenn Sie --template reportals zusätzliche Option verwenden, wird auch ein ToC für das resultierende PDF kompiliert, indem die verschiedenen Markdown-Überschriften im Notizbuch verwendet werden.
Stefan
2

notebook-as-pdfInstall

python -m pip installiere notebook-as-pdf pyppeteer-install

Benutze es

Sie können es auch mit nbconvert verwenden:

jupyter-nbconvert --to PDFviaHTML filename.ipynb

Dadurch wird eine Datei mit dem Namen filename.pdf erstellt.

oder pip install notebook-as-pdf

Erstellen Sie ein PDF aus dem Notizbuch jupyter-nbconvert-toPDFviaHTML

Dhiren Biren
quelle
Danke, das hat bei mir gut funktioniert. Ich habe dies zuerst in einer Python 3.6.8-Umgebung versucht, bin jedoch auf einige Probleme gestoßen. Ich habe dann ein Upgrade auf eine Python 3.7.8-Umgebung durchgeführt, die auf Conda basiert, und es hat wie ein Zauber funktioniert.
mastDrinkNimbuPani
Dies liegt daran, dass Asyncio eine Abhängigkeit für das Paket ist und irgendwo im Code eine Datei asyncio.run vorhanden ist, bei der es sich nur um eine 3.7-Methode handelt.
mastDrinkNimbuPani
0

Der einfachste Weg, den ich denke, ist 'Strg + P'> als 'pdf' speichern. Das ist es.

rishikeshF
quelle
Dies würde die Codeblöcke zeigen
Dani LA