Bagaimana cara mengonversi notebook IPython ke PDF dan HTML?

92

Saya ingin mengonversi ipython-notebook saya untuk mencetaknya, atau hanya mengirimkannya dalam format html. Saya perhatikan bahwa sudah ada alat untuk melakukannya, nbconvert . Meskipun saya telah mengunduhnya, saya tidak tahu bagaimana mengonversi notebook, dengan nbconvert2.py karena nbconvert mengatakan bahwa itu sudah usang. nbconvert2.py mengatakan bahwa saya memerlukan profil untuk mengonversi notebook, apakah itu? Apakah ada dokumentasi tentang alat ini?

nunzio13n
sumber

Jawaban:

100

Jika Anda telah menginstal LaTeX, Anda dapat mendownload sebagai PDF langsung dari notebook Jupyter dengan File -> Download as -> PDF melalui LaTeX (.pdf) . Jika tidak, ikuti dua langkah ini.

  1. Untuk keluaran HTML, Anda sekarang harus menggunakan Jupyter sebagai pengganti IPython dan pilih File -> Unduh sebagai -> HTML (.html) atau jalankan perintah berikut:

    jupyter nbconvert --to html notebook.ipynb  
    

    Ini akan mengonversi file dokumen Jupyter notebook.ipynb ke dalam format keluaran html.

    Google Colaboratory adalah lingkungan notebook Jupyter gratis dari Google yang tidak memerlukan penyiapan dan sepenuhnya berjalan di cloud. Jika Anda menggunakan Google Colab, perintahnya sama, tetapi Google Colab hanya memungkinkan Anda mengunduh format .ipynb atau .py.

  2. Ubah file html notebook.html menjadi file pdf bernama notebook.pdf. Di Windows, Mac atau Linux, instal wkhtmltopdf . wkhtmltopdf adalah utilitas baris perintah untuk mengubah html ke pdf menggunakan WebKit. Anda dapat mengunduh wkhtmltopdf dari halaman web yang ditautkan, atau di banyak distro Linux dapat ditemukan di repositori mereka.

    wkhtmltopdf notebook.html notebook.pdf   
    

Revisi asli (sekarang hampir usang): Konversikan file notebook IPython ke html.

ipython nbconvert --to html notebook.ipynb

karel
sumber
1
Semuanya runtuh menjadi satu halaman -__-
htafoya
2
Untuk keluaran HTML, Anda sekarang harus menggunakan jupytersebagai pengganti ipythonmisalnyajupyter nbconvert --to html notebook.ipynb
AlexG
Agar ini berfungsi, jupyter_contrib_nbextensions harus diinstal.
CharlesG
Menurut jawaban di atas, Anda membutuhkan wkhtmltopdf. Untuk menginstalnya di ubuntu 14.04, ini berfungsi untuk saya gist.github.com/brunogaspar/i>9079245923c04be6b0f92af431c10
Pradeep Singh
4
Anda juga dapat mencetak situs web ke pdf.
AndiCover
18

Dari dokumen :

Jika Anda ingin memberikan tampilan HTML atau PDF statis buku catatan Anda kepada orang lain, gunakan tombol Cetak. Ini membuka tampilan statis dokumen, yang dapat Anda cetak ke PDF menggunakan fasilitas sistem operasi Anda, atau simpan ke file dengan opsi 'Simpan' browser web Anda (perhatikan bahwa biasanya, ini akan membuat file html dan direktori bernama notebook_name_files di sebelahnya yang berisi semua informasi gaya yang diperlukan, jadi jika Anda ingin membagikan ini, Anda harus mengirim direktori bersama dengan file html utama).

akar
sumber
1
Terima kasih! Versi HTML sangat bagus, dan sangat mudah didapat. Namun PDF tidak bagus, grafik dipotong menjadi dua bagian jika berada di antara dua halaman dan garis kode yang panjang juga dipotong.
nunzio13n
@ nunzio13n - Setidaknya Anda memiliki html ... Saya belum pernah menggunakan nbconvrtjadi saya tidak bisa membantu Anda dalam hal itu. Mudah-mudahan seseorang yang telah datang ...
root
4
Tautan mati. Juga, saya tidak memiliki tombol cetak di buku catatan saya.
Tepuk
Menggunakan print di browser Anda dengan menggunakan CTRL+ Pworks.
Levi Baguley
a) Mengekspor sebagai HTML dari Jupyter tampaknya tidak menyimpan gambar, b) File -> simpan sebagai formulir Firefox memberi Anda halaman yang sama sekali tidak interaktif yang hanya menampilkan apa yang terlihat. Juga link di posting Anda sekarang sudah mati.
jrh
13

nbconvert belum sepenuhnya digantikan oleh nbconvert2, Anda masih dapat menggunakannya jika Anda mau, jika tidak, kami akan menghapus file yang dapat dieksekusi. Ini hanya peringatan bahwa kami tidak lagi memperbaiki bug nbconvert1.

Berikut ini seharusnya bekerja:

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

Jika Anda menggunakan versi IPython yang cukup baru, jangan gunakan tampilan cetak, cukup gunakan dialog cetak normal. Grafik yang dipotong di chrome adalah masalah yang diketahui (Chrome tidak menghormati beberapa css cetak), dan bekerja jauh lebih baik dengan firefox, tidak semua versi masih.

Adapun nbconvert2, masih sangat dev dan docs perlu ditulis.

Nbviewer menggunakan nbconvert2 sehingga cukup layak dengan HTML.

Daftar profil yang tersedia saat ini:

$ 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

Memberi Anda profil yang ada. (Anda dapat membuat sendiri, cf dokumen masa depan, ./nbconvert2.py --help-allakan memberi Anda beberapa opsi yang dapat Anda gunakan di profil Anda.)

kemudian

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

Dan itu harus menulis file (tex) Anda selama angka yang diekstrak di cwd. Ya saya tahu ini tidak jelas, dan mungkin akan berubah jadi tidak dok ...

Alasannya adalah bahwa nbconvert2 terutama akan menjadi pustaka python di mana dalam kode pseudo Anda dapat melakukan:

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

Titik masuk akan muncul nanti, setelah API distabilkan.

Saya hanya akan menunjukkan bahwa @jdfreder (profil github) sedang mengerjakan ekspor tex / pdf / sphinx dan merupakan ahli untuk menghasilkan PDF dari file ipynb pada saat penulisan ini.

Matt
sumber
Terima kasih, Anda telah menjelaskan lebih banyak tentang keraguan saya. Tetapi tetap saja nbconvert2.py tidak berfungsi, karena ia membutuhkan bahkan file Config [NbconvertApp] Config file for profile './profile/latex_base.nbcv' not found, giving upDan nbconvert tidak memberi saya file pdf secara langsung, tetapi file lateks, dan saya harus memproses file * .tex dengan pdflatex, tetapi itu solusi yang bagus.
nunzio13n
Bisakah Anda membuka masalah di github, dan kami akan menyelesaikannya.
Matt
Mungkin ini bukan masalah nbconvert tetapi, ini karena kurangnya pengetahuan saya tentang. Mungkin ketika dokumentasi keluar semuanya akan jelas, ipython dengan notebook dan nbconvert adalah pekerjaan yang sangat bagus dan saya yakin itu akan menjadi dokumentasi segera.
nunzio13n
Ini sepertinya kehilangan / tidak memberikan penomoran ipython apa pun (berharap itu akan dikonversi menggunakan arahan ipython).
Andy Hayden
Apakah ada versi API untuk membuat ini terjadi? Saya melihat bahwa ada IPython.nbconvert.exporters.latexdan saya bertanya-tanya apakah ada cara untuk mendapatkan keluaran PDF dari ini tanpa alat baris perintah. Juga, apa saja dependensi untuk membuatnya berfungsi? (pandoc, tetex, hal-hal lain?) Dan saya menganggap ini bukan lintas platform (tidak akan berfungsi di Windows). TIA!
IanSR
12

Juga berikan --executebendera untuk mendapatkan output

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

Praktik terbaik adalah menjaga output dari notebook untuk kontrol versi, lihat: Menggunakan notebook IPython di bawah kontrol versi

Tetapi kemudian, jika Anda tidak lulus --execute, output tidak akan muncul di HTML, lihat juga: Bagaimana cara menjalankan Notebook Jupyter .ipynb dari terminal?

Untuk fragmen HTML tanpa header: Bagaimana cara mengekspor notebook IPython ke HTML untuk posting blog?

Diuji di Jupyter 4.4.0.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
9
  1. Simpan sebagai HTML ;
  2. Ctrl+ P;
  3. Simpan sebagai PDF .
סטנלי גרונן
sumber
Dianjurkan untuk memperluas semua sel keluaran. Jadi PDF akan menjadi jelas.
mukundha reddy
9

Bagi mereka yang tidak dapat menginstal wkhtmltopdf di sistem mereka, satu metode lain selain yang telah disebutkan dalam jawaban atas pertanyaan ini adalah dengan mengunduh file sebagai file html dari notebook jupyter, mengunggahnya ke HTML ke PDF , dan mengunduh file pdf yang dikonversi dari sana.

Di sini Anda memiliki notebook IPython (.ipynb) yang dikonversi ke format PDF (.pdf) & HTML (.html).

Shayan Shafiq
sumber
4

Hanya jawaban ini yang akan berguna bagi Anda jika Anda memiliki matematika, rumus ilmiah dalam dokumen Anda. Bahkan jika Anda tidak memilikinya, itu berfungsi dengan baik.

Cara GUI

  • buka notebook jupyter buka notebook jupyter
  • Buka File> Unduh sebagai> HTML atau PDF melalui LaTeX Buka File> Unduh sebagai> HTML atau PDF melalui LaTeX

  • Kemudian periksa folder Unduhan Anda untuk mencari file tersebut. PS: Jika LaTeX mengalami kesalahan saat mengkompilasi PDF, itu akan gagal. Jika ini terjadi, unduh file HTML lalu gunakan http://webpagetopdf.com/ atau layanan serupa lainnya untuk mengonversi HTML ke PDF.

Cara Command-Line

  • Buka terminal
  • Arahkan ke folder yang berisi notebook jupyter
  • ketik "jupyter nbconvert --to pdf your_jupyter_notebook.ipynb" NB: Jika gagal coba jawaban Yogesh
Tejas Shetty
sumber
4

Jika Anda menggunakan versi cloud sagemath , Anda cukup pergi ke pojok kiri,
pilih File → Unduh sebagai → Pdf via LaTeX (.pdf)
Periksa tangkapan layar jika Anda mau.
Screenshot Mengonversi ipynb ke pdf

Jika tidak berhasil karena alasan apa pun, Anda dapat mencoba cara lain.
pilih File → Print Preview lalu pada preview
klik kanan → Print kemudian pilih save as pdf.

Lefteris Xris
sumber
3

Saya belum bisa mendapatkan pdf untuk bekerja. Dokumen tersebut menyiratkan bahwa saya harus dapat membuatnya bekerja dengan lateks, jadi mungkin lateks saya tidak berfungsi. 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.

Namun, HTML bekerja dengan baik menggunakan 'slide', dan itu indah! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

// Perbarui 2014-11-07Fri .: Sintaks IPython v3 berbeda, lebih sederhana; $ ipython nbconvert --to PDF myfile.ipynb Dalam semua kasus, tampaknya saya kehilangan perpustakaan 'pdflatex'. Saya sedang menyelidiki itu.

AnneTheAgile
sumber
coba: $ ipython nbconvert your_file.ipynb --to latex --post PDF
moldovean
ty @moldovean karena telah mem-ping saya untuk melihat ini lagi. Lebih banyak googling baru saja mengungkapkan masalah tersebut. Urutan argumen tidak masalah, saya masih mendapat "Tidak ada file atau direktori seperti itu".
AnneTheAgile
itu masalah yang menarik. Mungkin ... mungkin menginstal ulang ipython akan membantu .. Saya benar-benar tidak tahu :(
moldovean
@moldovean, ternyata pustaka tertentu diperlukan tetapi tidak diinstal oleh ipynb. Dalam hal ini saya membutuhkan setidaknya pdflatex di jalur saya. Lihat PR saya untuk meningkatkan pemeriksaan kesalahan, github.com/ipython/ipython/pull/6884
AnneTheAgile
3

Anda dapat melakukannya dengan mengonversi buku catatan menjadi HTML terlebih dahulu lalu ke format PDF:

Langkah-langkah berikut telah saya terapkan pada: OS: Ubuntu, notebook Anaconda-Jupyter, Python 3

1 Simpan Notebook dalam format HTML:

  1. Mulai buku catatan jupyter yang ingin Anda simpan dalam format HTML. Pertama-tama simpan buku catatan dengan benar sehingga file HTML akan memiliki versi tersimpan terbaru dari kode / buku catatan Anda.

  2. Jalankan perintah berikut dari buku catatan itu sendiri:

    !jupyter nbconvert --to html your_notebook_name.ipynb

Setelah eksekusi akan membuat versi HTML dari notebook Anda dan akan menyimpannya di direktori kerja saat ini. Anda akan melihat satu file html akan ditambahkan ke direktori saat ini dengan your_notebook_name.htmlnama

( your_notebook_name.ipynb-> your_notebook_name.html).

2 Simpan html sebagai PDF:

  1. Sekarang buka your_notebook_name.htmlfile itu (klik di atasnya). Ini akan dibuka di tab baru di browser Anda.
  2. Sekarang pergi ke opsi cetak. Dari sini Anda dapat menyimpan file ini dalam format file pdf.

Perhatikan bahwa dari opsi cetak kami juga memiliki fleksibilitas untuk memilih sebagian dari buku catatan untuk disimpan dalam format pdf.

Yogesh
sumber
3

Pendekatan lain yang disarankan:

  1. Menggunakan 'Print dan kemudian pilih save as pdf.' dari file HTML Anda akan mengakibatkan hilangnya tepi batas, penyorotan sintaksis, pemangkasan plot, dll.

  2. Beberapa perpustakaan lain terbukti rusak saat menggunakan versi usang.

Solusi: Pilihan yang lebih baik dan tidak merepotkan adalah menggunakan konverter online yang akan mengonversi versi * .html dari * .ipynb Anda ke * .pdf.

Langkah:

  1. Pertama, dari antarmuka notebook Jupyter Anda, konversikan * .ipynb ke * .html menggunakan:

File> Unduh sebagai> HTML (.html)

  1. Unggah file * .html yang baru dibuat di sini lalu pilih opsi HTML ke PDF.

  2. File pdf Anda sekarang siap diunduh.

  3. Anda sekarang memiliki file .ipynb, .html dan .pdf

Saurabh Jain
sumber
2

Saya telah mencari cara untuk menyimpan notebook sebagai html, karena setiap kali saya mencoba mendownload sebagai html dengan instalasi Jupyter baru saya, saya selalu mendapatkan 500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'error. Anehnya, saya menemukan bahwa mengunduh sebagai html sesederhana:

  1. Klik kiri di notebook
  2. Klik 'Simpan Sebagai ...' di menu tarik-turun
  3. Simpan sesuai

Tanpa pratinjau cetak, tanpa cetakan, tanpa nbconvert. Menggunakan Jupyter Version: 1.0.0. Hanya saran untuk dicoba (jelas tidak semua penyiapan sama).

semore_1267
sumber
2

Saya menemukan bahwa metode termudah untuk mengonversi notebook yang ada di web ke pdf adalah dengan melihatnya terlebih dahulu di layanan web nbviewer . Anda kemudian dapat mencetaknya ke file pdf. Jika notebook ada di drive lokal Anda, unggah ke repositori github terlebih dahulu dan gunakan url untuk nbviewer.

hlkw
sumber
2

Saya menggabungkan beberapa jawaban di atas dalam python sebaris yang dapat Anda tambahkan ke ~ / .bashrc atau ~ / .zshrc untuk mengkompilasi dan mengonversi banyak buku catatan menjadi satu file 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 * 
}
partizanos.dll
sumber
2

Versi python biasa dari jawaban partizanos .

  • buka Terminal (Linux, MacOS) atau langsung ke titik di mana Anda dapat mengeksekusi file python di Windows
  • Ketik kode berikut dalam file .py (katakanlah tejas.py)
import os

[os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir(".") if f.endswith("ipynb")]
  • Arahkan ke folder yang berisi buku catatan jupyter
  • Pastikan tejas.py ada di folder saat ini. Salin ke folder saat ini jika perlu.
  • ketik "python tejas.py"
  • Pekerjaan selesai
Tejas Shetty
sumber
Menggunakan --template reportsebagai opsi tambahan juga mengkompilasi ToC ke pdf yang dihasilkan dengan mengambil judul penurunan harga yang berbeda di buku catatan.
Stefan
2

notebook-as-pdfInstall

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

Gunakan

Anda juga dapat menggunakannya dengan nbconvert:

jupyter-nbconvert --ke PDF melalui namafileHTML.ipynb

yang akan membuat file bernama filename.pdf.

atau pip install notebook-as-pdf

buat pdf dari notebook jupyter-nbconvert-toPDFviaHTML

Dhiren Biren
sumber
Terima kasih, ini bekerja dengan baik untuk saya. Saya pertama kali mencoba ini dalam lingkungan Python 3.6.8 tetapi mengalami beberapa masalah. Saya kemudian meningkatkan ke lingkungan Python 3.7.8, berdasarkan Conda, dan itu bekerja seperti Mantra.
mastDrinkNimbuPani
Itu karena asyncio adalah dependensi untuk paket, dan di suatu tempat di kode terdapat asyncio.run yang merupakan metode 3,7 saja.
mastDrinkNimbuPani
1

Anda dapat menggunakan layanan online sederhana ini . Ini mendukung HTML dan PDF.

Azatik1000
sumber
0

Cara paling sederhana menurut saya adalah 'Ctrl + P'> simpan sebagai 'pdf'. Itu dia.

rishikeshF
sumber