IPython not defterlerini PDF ve HTML'ye nasıl dönüştürebilirim?


92

İpython defterlerimi yazdırmak için dönüştürmek veya html formatında göndermek istiyorum. Bunu yapmak için zaten bir araç olduğunu fark ettim, nbconvert . İndirmiş olmama rağmen, nbconvert2.py ile dizüstü bilgisayarı nasıl dönüştüreceğim hakkında hiçbir fikrim yok, çünkü nbconvert kullanımdan kaldırıldığını söylüyor. nbconvert2.py, dizüstü bilgisayarı dönüştürmek için bir profile ihtiyacım olduğunu söylüyor, bu nedir? Bu araçla ilgili bir belge var mı?


Yanıtlar:


100

Yüklü LaTeX'iniz varsa, Dosya -> Farklı indir -> LaTeX (.pdf) aracılığıyla PDF ile Jupyter not defterinden doğrudan PDF olarak indirebilirsiniz . Aksi takdirde bu iki adımı izleyin.

  1. HTML çıktısı için şimdi IPython yerine Jupyter kullanmalı ve Dosya -> Farklı indir -> HTML (.html) seçeneğini seçmeli veya aşağıdaki komutu çalıştırmalısınız:

    jupyter nbconvert --to html notebook.ipynb  
    

    Bu, Jupyter belge dosyası notebook.ipynb'i html çıktı biçimine dönüştürecektir.

    Google Colaboratory, Google'ın kurulum gerektirmeyen ve tamamen bulutta çalışan ücretsiz Jupyter dizüstü bilgisayar ortamıdır. Google Colab kullanıyorsanız, komutlar aynıdır, ancak Google Colab yalnızca .ipynb veya .py biçimlerini indirmenize izin verir.

  2. Notebook.html html dosyasını notebook.pdf adlı bir pdf dosyasına dönüştürün. Windows, Mac veya Linux'ta wkhtmltopdf'i kurun . wkhtmltopdf, WebKit kullanarak html'yi pdf'ye dönüştürmek için kullanılan bir komut satırı yardımcı programıdır. Bağlantılı web sayfasından wkhtmltopdf'i indirebilirsiniz veya birçok Linux dağıtımında bu dosyalar kendi havuzlarında bulunabilir.

    wkhtmltopdf notebook.html notebook.pdf   
    

Orijinal (artık neredeyse geçersiz) revizyon: IPython not defteri dosyasını html'ye dönüştürün.

ipython nbconvert --to html notebook.ipynb


1
Her şey tek bir sayfaya daraltıldı -__-
htafoya

2
HTML çıktısı için artık örneğin jupyteryerine kullanmalısınızipythonjupyter nbconvert --to html notebook.ipynb
AlexG

Bunun çalışması için jupyter_contrib_nbextensions kurulmalıdır.
CharlesG

Yukarıdaki cevaba göre wkhtmltopdf'e ihtiyacınız var. Bunu ubuntu 14.04'e
Pradeep Singh

4
Web sitesini bir pdf olarak da yazdırabilirsiniz.
AndiCover

18

Gönderen docs :

Başkalarına not defterinizin statik bir HTML veya PDF görünümünü sağlamak istiyorsanız, Yazdır düğmesini kullanın. Bu, işletim sisteminizin olanaklarını kullanarak PDF olarak yazdırabileceğiniz veya web tarayıcınızın 'Kaydet' seçeneğiyle bir dosyaya kaydedebileceğiniz belgenin statik bir görünümünü açar (bunun tipik olarak hem bir html dosyası hem de adında bir dizin oluşturacağını unutmayın. yanında gerekli tüm stil bilgilerini içeren not defteri_adı_dosyaları, bu nedenle bunu paylaşmak istiyorsanız, dizini ana html dosyasıyla birlikte göndermelisiniz).


1
Teşekkür ederim! HTML sürümü gerçekten iyi ve elde etmesi gerçekten çok basit. Ancak PDF iyi değildir, grafikler iki sayfa arasındaysa iki parça halinde kesilir ve uzun kod satırı da kesilir.
nunzio13n

@ nunzio13n - En azından html'niz var ... Kullanmadım, bu nbconvrtyüzden size bu konuda gerçekten yardımcı olamam. Umarım gelen biri ...
kök

4
Ölü bağlantı. Ayrıca, defterimde yazdırma düğmesi yok.
Pat

Tarayıcınızda CTRL+ PWorks kullanarak yazdırmayı kullanın .
Levi Baguley

a) Jupyter'den HTML olarak dışa aktarma, resimleri kaydetmiyor gibi görünüyor, b) Dosya -> form olarak kaydet Firefox size yalnızca görünür olanı gösteren tamamen etkileşimsiz bir sayfa veriyor. Ayrıca gönderinizdeki bağlantı artık yok.
jrh

13

nbconvert henüz tam olarak nbconvert2 ile değiştirilmemiştir, isterseniz yine de kullanabilirsiniz, aksi takdirde çalıştırılabilir dosyayı kaldırırdık. Bu, artık nbconvert1'de hata düzeltmediğimizi belirten bir uyarı.

Aşağıdakiler çalışmalıdır:

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

Yeterince yeni bir IPython sürümü kullanıyorsanız, yazdırma görünümünü kullanmayın, sadece normal yazdırma iletişim kutusunu kullanın. Kromda grafik kesimi bilinen bir sorundur (Chrome bazı baskı css'lerine uymaz) ve firefox ile çok daha iyi çalışır, tüm sürümler hala geçerli değildir.

Nbconvert2'ye gelince, hala oldukça geliştirici ve belgelerin yazılması gerekiyor.

Nbviewer, nbconvert2 kullanır, bu yüzden HTML ile oldukça iyi.

Mevcut mevcut profillerin listesi:

$ 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

Size mevcut profilleri verin. (Kendi belgenizi oluşturabilirsiniz, ileride bir belge oluşturabilirsiniz, ./nbconvert2.py --help-allsize profilinizde kullanabileceğiniz bir seçenek sunmalıdır.)

sonra

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

Ve cwd'de çıkarılan rakamlar olduğu sürece (tex) dosyalarınızı yazmalıdır. Evet, bunun açık olmadığını biliyorum ve muhtemelen değişecek, dolayısıyla doktor ...

Bunun nedeni, nbconvert2'nin esas olarak sözde kodda yapabileceğiniz bir python kitaplığı olmasıdır :

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

API stabilize edildikten sonra giriş noktası daha sonra gelecek.

Sadece işaret edeceğiz @jdfreder (github profili) tex / pdf / sfenks ihracat üzerinde çalışıyor ve bu yazı sırasında ipynb dosyadan PDF oluşturmak için uzman edilir.


Teşekkürler, şüphelerimi daha fazla açıklığa kavuşturdunuz. Ama yine de nbconvert2.py çalışmıyor, çünkü bir Yapılandırma dosyasına ihtiyaç duyuyor [NbconvertApp] Config file for profile './profile/latex_base.nbcv' not found, giving upVe nbconvert bana doğrudan bir pdf dosyası değil, bir lateks dosyası veriyor ve * .tex dosyasını pdflatex ile işlemem gerekiyor, ancak iyi bir çözüm.
nunzio13n

Github'da bir sorun açar mısın, biz hallederiz.
Matt

Muhtemelen bu bir nbconvert meselesi değil ama benim bilgisizliğimden kaynaklanıyor. Belki de dokümantasyon çıktığında her şey netleşecek, dizüstü bilgisayar ve nbconvert ile ipython çok güzel bir iş ve eminim ki bu yakında bir dokümantasyon olacak.
nunzio13n

Bu, herhangi bir ipython numaralandırması kaybetmiş / vermemiş gibi görünüyor (ipython yönergesini kullanarak dönüştürebileceğini umuyordu).
Andy Hayden

Bunu gerçekleştirecek bir API sürümü var mı? Var olduğunu görüyorum IPython.nbconvert.exporters.latexve bundan komut satırı aracı olmadan PDF çıktısı almanın bir yolu olup olmadığını merak ediyorum. Ayrıca, çalışmasını sağlamak için gereken bağımlılıklar nelerdir? (pandoc, tetex, başka şeyler?) Ve bunun çapraz platform olmadığını varsayıyorum (Windows'ta çalışmayacak). TIA!
IanSR

12

Ayrıca --executeçıktıyı almak için bayrağı da iletin

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

En iyi uygulama, çıktıyı sürüm kontrolü için dizüstü bilgisayarın dışında tutmaktır, bkz: IPython dizüstü bilgisayarları sürüm kontrolü altında kullanma

Ama sonra, geçemezseniz --execute, çıktı HTML'de bulunmayacaktır, ayrıca bakınız: .ipynb Jupyter Notebook'u terminalden nasıl çalıştırabilirim?

Başlığı olmayan bir HTML parçası için: Bir IPython not defterini bir blog yazısı için HTML'ye nasıl aktarabilirim?

Jupyter 4.4.0'da test edilmiştir.



9

Sistemlerine wkhtmltopdf yükleyemeyenler için, bu sorunun yanıtlarında daha önce bahsedilen birçok yöntemden başka bir yöntem, dosyayı jupyter not defterinden bir html dosyası olarak indirmek, HTML'ye PDF'ye yüklemek ve indirmektir. oradan dönüştürülen pdf dosyaları.

Burada IPython not defteriniz (.ipynb) hem PDF (.pdf) hem de HTML (.html) formatlarına dönüştürülür.


4

Belgenizde matematik, bilimsel formüller varsa, yalnızca bu yanıt sizin için yararlı olacaktır. Onlara sahip olmasanız bile iyi çalışıyor.

GUI yolu

  • jupyter defterini aç jupyter defterini aç
  • Dosyalar> Farklı İndir> LaTeX aracılığıyla HTML veya PDF'ye gidin Dosyalar> Farklı İndir> LaTeX aracılığıyla HTML veya PDF'ye gidin

  • Ardından dosya için İndirilenler klasörünüzü kontrol edin. Not: LaTeX, PDF'yi derlerken herhangi bir hata yaptıysa, başarısız olacaktır. Böyle bir durumda, HTML dosyasını indirin ve ardından http://webpagetopdf.com/ veya benzer bir hizmeti kullanarak HTML'yi PDF'ye dönüştürün.

Komut Satırı yolu

  • Terminali açın
  • Jupyter not defterini içeren klasöre gidin
  • "jupyter nbconvert - pdf için your_jupyter_notebook.ipynb" yazın Not: Başarısız olursa Yogesh'in cevabını deneyin

4

Sagemath bulut sürümünü kullanıyorsanız , sol köşeye gidip
Dosya → Farklı indir → LaTeX üzerinden Pdf (.pdf) seçeneğini seçebilirsiniz.İsterseniz
ekran görüntüsünü kontrol edin.
Ekran görüntüsü ipynb'i pdf'ye dönüştürme

Herhangi bir nedenle işe yaramazsa, başka bir yol deneyebilirsiniz.
Dosya → Baskı Önizleme'yi seçin ve ardından önizlemede
→ Yazdır'a sağ tıklayın ve ardından pdf olarak kaydet'i seçin.


3

Henüz çalışmak için pdf alamıyorum. Dokümanlar, onu lateks ile çalıştırabilmem gerektiğini ima ediyor, bu yüzden belki de lateksim çalışmıyor. 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.

Ancak, HTML 'slaytları' kullanarak harika çalışıyor ve çok güzel! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

// Güncelleme 2014-11-07Fri .: IPython v3 sözdizimi farklıdır, daha basittir; $ ipython nbconvert --to PDF myfile.ipynb Her durumda, 'pdflatex' kitaplığı eksik görünüyor. Bunu araştırıyorum.


deneyin: $ ipython nb your_file.ipynb dosyasını latekse çevirin --post PDF
moldovean

ty @moldovean, buna bir kez daha bakmam için bana ping attığı için. Daha fazla Google, sorunu ortaya çıkardı. Argüman sırası önemli değildi, hala "Böyle bir dosya veya dizin yok" var.
AnneTheAgile

bu ilginç bir konu. Belki ... sadece belki ipython'u yeniden yüklemek yardımcı olabilir .. Gerçekten bilmiyorum :(
moldovean

@moldovean, belli kütüphanelerin gerekli olduğu ancak ipynb tarafından kurulmadığı ortaya çıktı. Bu durumda yolumda en azından pdflatex'e ihtiyacım var. Hata kontrolünü iyileştirmek için PR'mi
görün

3

Bunu önce not defterini HTML'ye ve ardından PDF biçimine dönüştürerek yapabilirsiniz:

Uyguladığım adımları izleyin: İşletim Sistemi: Ubuntu, Anaconda-Jupyter dizüstü bilgisayar, Python 3

1 Not Defterini HTML biçiminde kaydedin:

  1. HTML formatında kaydetmek istediğiniz jupyter not defterini başlatın. Öncelikle not defterini düzgün bir şekilde kaydedin, böylece HTML dosyası kodunuzun / not defterinizin en son kaydedilmiş sürümüne sahip olacaktır.

  2. Aşağıdaki komutu dizüstü bilgisayarın kendisinden çalıştırın:

    !jupyter nbconvert --to html your_notebook_name.ipynb

Yürütmeden sonra, not defterinizin HTML sürümünü oluşturacak ve mevcut çalışma dizinine kaydedecektir. Şu anki dizine your_notebook_name.htmlisimli bir html dosyasının ekleneceğini göreceksiniz

( your_notebook_name.ipynb-> your_notebook_name.html).

2 html'yi PDF olarak kaydedin:

  1. Şimdi o your_notebook_name.htmldosyayı açın (üzerine tıklayın). Tarayıcınızın yeni bir sekmesinde açılacaktır.
  2. Şimdi yazdırma seçeneğine gidin. Buradan bu dosyayı pdf dosya formatında kaydedebilirsiniz.

Yazdırma seçeneğinden, pdf formatında kaydetmek için bir not defterinin bir bölümünü seçme esnekliğine de sahip olduğumuzu unutmayın.


3

Önerilen diğer yaklaşımlar:

  1. 'Yazdır'ı ve ardından pdf olarak kaydet'i seçin. HTML dosyanızdan , kenarlık kenarlarının kaybolması , sözdiziminin vurgulanması, grafiklerin kırpılması vb.

  2. Diğer bazı kitaplıklar, eski sürümlerin kullanılması söz konusu olduğunda bozuk olduklarını göstermiştir.

Çözüm: Daha iyi ve sorunsuz bir seçenek, * .ipynb dosyanızın * .html sürümünü * .pdf'ye dönüştürecek çevrimiçi bir dönüştürücü kullanmaktır .

Adımlar:

  1. Öncelikle, Jupyter dizüstü bilgisayar arayüzünüzden, * .ipynb dosyanızı * .html'ye dönüştürün:

Dosya> Farklı indir> HTML (.html)

  1. Yeni oluşturulan * .html dosyasını buraya yükleyin ve ardından HTML'den PDF'ye seçeneğini seçin.

  2. PDF dosyanız artık indirilmeye hazır.

  3. Artık .ipynb, .html ve .pdf dosyalarınız var


2

Defterleri html olarak kaydetmenin bir yolunu arıyordum, çünkü yeni Jupyter kurulumumla html olarak indirmeyi denediğimde her zaman bir 500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'hata alıyorum. İşin garibi, html olarak indirmenin şu kadar basit olduğunu buldum:

  1. Not defterine sol tıklama
  2. Açılır menüde "Farklı Kaydet ..." i tıklayın
  3. Uygun şekilde kaydedin

Baskı önizleme yok, baskı yok, nbconvert yok. Jupyter kullanarak Version: 1.0.0. Sadece denemek için bir öneri (tabii ki tüm kurulumlar aynı değil).


2

Web'deki bir not defterini pdf'ye dönüştürmenin en kolay yönteminin, onu ilk önce nbviewer web hizmetinde görüntülemek olduğunu anladım . Daha sonra bunu bir pdf dosyasına yazdırabilirsiniz. Dizüstü bilgisayarınız yerel sürücünüzdeyse, önce onu bir github havuzuna yükleyin ve nbviewer için url'sini kullanın.


2

Birçok not defterini derlemek ve tek bir pdf dosyasına dönüştürmek için ~ / .bashrc veya ~ / .zshrc'ye ekleyebileceğiniz bazı yanıtları satır içi python'da birleştirdim

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 * 
}

2

Partizanos'un cevabının düz python versiyonu .

  • Terminal'i (Linux, MacOS) açın veya Windows'ta python dosyalarını çalıştırabileceğiniz noktaya gelin
  • Aşağıdaki kodu bir .py dosyasına yazın (tejas.py deyin)
import os

[os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir(".") if f.endswith("ipynb")]
  • Jupyter not defterlerini içeren klasöre gidin
  • Tejas.py'nin mevcut klasörde olduğundan emin olun. Gerekirse mevcut klasöre kopyalayın.
  • "python tejas.py" yazın
  • İş bitmiş

--template reportEk bir seçenek olarak kullanmak , aynı zamanda, not defterinde farklı fiyat aşağı başlıklarını alarak sonuçta elde edilen pdf için bir ToC derler.
Stefan

2

pdf olarak dizüstü bilgisayar

python -m pip notebook-as-pdf pyppeteer-install yükle

Onu kullan

Ayrıca nbconvert ile de kullanabilirsiniz:

jupyter-nbconvert - PDFviaHTML dosya adına.ipynb

dosyaadı.pdf adlı bir dosya oluşturacaktır.

veya pdf olarak dizüstü bilgisayarı kurun

jupyter-nbconvert-toPDFviaHTML defterinden pdf oluşturun


Teşekkür ederim, bu benim için iyi çalıştı. Bunu ilk olarak bir Python 3.6.8 ortamında denedim ancak bazı sorunlarla karşılaştım. Daha sonra Conda'ya dayalı bir Python 3.7.8 ortamına yükselttim ve bir Charm gibi çalıştı.
mastDrinkNimbuPani

Bunun nedeni, asyncio'nun paket için bir bağımlılık olmasıdır ve kodun bir yerinde yalnızca 3.7 olan bir asyncio.run vardır.
mastDrinkNimbuPani

1

Bu basit çevrimiçi hizmeti kullanabilirsiniz . Hem HTML hem de PDF'yi destekler.


0

Bence en basit yol 'Ctrl + P'> 'pdf' olarak kaydetmektir. Bu kadar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.