¿Cómo convertir cuadernos IPython a PDF y HTML?


89

Quiero convertir mis cuadernos ipython para imprimirlos, o simplemente enviarlos en formato html. He notado que ya existe una herramienta para hacer eso, nbconvert . Aunque lo he descargado, no tengo idea de cómo convertir el portátil con nbconvert2.py ya que nbconvert dice que está obsoleto. nbconvert2.py dice que necesito un perfil para convertir el portátil, ¿qué es? ¿Existe documentación sobre esta herramienta?


Respuestas:


96

Si tiene LaTeX instalado, puede descargarlo como PDF directamente desde el cuaderno Jupyter con Archivo -> Descargar como -> PDF a través de LaTeX (.pdf) . De lo contrario, siga estos dos pasos.

  1. Para la salida HTML, ahora debe usar Jupyter en lugar de IPython y seleccionar Archivo -> Descargar como -> HTML (.html) o ejecutar el siguiente comando:

    jupyter nbconvert --to html notebook.ipynb  
    

    Esto convertirá el archivo de documento de Jupyter notebook.ipynb al formato de salida html.

    Google Colaboratory es el entorno de notebook Jupyter gratuito de Google que no requiere configuración y se ejecuta completamente en la nube. Si está utilizando Google Colab, los comandos son los mismos, pero Google Colab solo le permite descargar formatos .ipynb o .py.

  2. Convierta el archivo html notebook.html en un archivo pdf llamado notebook.pdf. En Windows, Mac o Linux, instale wkhtmltopdf . wkhtmltopdf es una utilidad de línea de comandos para convertir html a pdf usando WebKit. Puede descargar wkhtmltopdf desde la página web vinculada, o en muchas distribuciones de Linux se puede encontrar en sus repositorios.

    wkhtmltopdf notebook.html notebook.pdf   
    

Revisión original (ahora casi obsoleta): Convierta el archivo del cuaderno IPython a html.

ipython nbconvert --to html notebook.ipynb


1
Todo se colapsó en una página -__-
htafoya

2
Para la salida HTML, ahora debe usar jupyteren lugar de, ipythonpor ejemplojupyter nbconvert --to html notebook.ipynb
AlexG

Para que esto funcione, se debe instalar jupyter_contrib_nbextensions .
CharlesG

De acuerdo con la respuesta anterior, necesita wkhtmltopdf. Para instalarlo en ubuntu 14.04, esto funcionó para mí gist.github.com/brunogaspar/bd89079245923c04be6b0f92af431c10
Pradeep Singh

3
También puede imprimir el sitio web en un pdf.
AndiCover

17

De los documentos :

Si desea proporcionar a otras personas una vista HTML o PDF estática de su cuaderno, use el botón Imprimir. Esto abre una vista estática del documento, que puede imprimir en PDF utilizando las instalaciones de su sistema operativo, o guardar en un archivo con la opción 'Guardar' de su navegador web (tenga en cuenta que, por lo general, esto creará tanto un archivo html como un directorio llamado notebook_name_files junto a él que contiene toda la información de estilo necesaria, por lo que si desea compartir esto, debe enviar el directorio junto con el archivo html principal).


1
¡Gracias! La versión HTML es realmente buena y muy fácil de obtener. Sin embargo, el PDF no es bueno, los gráficos se cortan en dos partes si están entre dos páginas y la línea de código larga también se corta.
nunzio13n

@ nunzio13n - Bueno, al menos tienes el html ... No lo he usado, nbconvrtasí que no puedo ayudarte con eso. Con suerte, vendrá alguien que sí ...
root

3
Enlace muerto. Además, no tengo ningún botón de impresión en mi cuaderno.
Pat

Usar imprimir en su navegador usando CTRL+ Pfunciona.
Levi Baguley

13

nbconvert aún no ha sido reemplazado por completo por nbconvert2, aún puede usarlo si lo desea, de lo contrario, habríamos eliminado el ejecutable. Es solo una advertencia de que ya no corregimos nbconvert1.

Lo siguiente debería funcionar:

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

Si tiene una versión lo suficientemente reciente de IPython, no use la vista de impresión, solo use el diálogo de impresión normal. El corte de gráficos en Chrome es un problema conocido (Chrome no respeta algunos css de impresión) y funciona mucho mejor con Firefox, aún no con todas las versiones.

En cuanto a nbconvert2, todavía es necesario escribir mucho dev y documentos.

Nbviewer usa nbconvert2, por lo que es bastante decente con HTML.

Lista de perfiles disponibles actualmente:

$ 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

Darle los perfiles existentes. (Puede crear el suyo propio, cf future doc, ./nbconvert2.py --help-alldebería darle alguna opción que pueda usar en su perfil).

entonces

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

Y debería escribir sus archivos (tex) siempre que las figuras extraídas en cwd. Sí, sé que esto no es obvio, y probablemente cambiará, por lo tanto, no hay documento ...

La razón de esto es que nbconvert2 será principalmente una biblioteca de Python donde en pseudocódigo puede hacer:

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

El punto de entrada vendrá más tarde, una vez que se estabilice la API.

Solo señalaré que @jdfreder (perfil de github) está trabajando en la exportación de tex / pdf / sphinx y es el experto en generar PDF a partir de un archivo ipynb en el momento de escribir este artículo.


Gracias, me has aclarado más dudas. Pero aún así nbconvert2.py no funciona, porque necesita incluso un archivo de configuración [NbconvertApp] Config file for profile './profile/latex_base.nbcv' not found, giving upY nbconvert no me da directamente un archivo pdf, sino un archivo latex, y tengo que procesar el archivo * .tex con pdflatex, pero es una buena solucion.
nunzio13n

¿Puedes abrir un problema en github? Lo solucionaremos.
Matt

Probablemente no sea un problema de nbconvert, pero se debe a mi falta de conocimiento sobre. Quizás cuando salga la documentación todo estará claro, ipython con el cuaderno y nbconvert son un trabajo muy agradable y estoy seguro de que pronto será una documentación.
nunzio13n

Esto parece perder / no dar ninguna numeración de ipython (esperaba que se convirtiera usando la directiva ipython).
Andy Hayden

¿Existe una versión de API para que esto suceda? Veo que la hay IPython.nbconvert.exporters.latexy me pregunto si hay alguna manera de obtener salida PDF de esto sin la herramienta de línea de comandos. Además, ¿cuáles son las dependencias para que funcione? (¿pandoc, tetex, otras cosas?) Y supongo que no es multiplataforma (no funcionará en Windows). TIA!
IanSR

11

También pasa la --executebandera para obtener la salida

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

La mejor práctica es mantener la salida fuera del cuaderno para el control de versiones, consulte: Uso de los cuadernos IPython bajo control de versiones

Pero luego, si no aprueba --execute, la salida no estará presente en el HTML, consulte también: ¿Cómo ejecutar un .ipynb Jupyter Notebook desde la terminal?

Para un fragmento HTML sin encabezado: ¿Cómo exportar un cuaderno IPython a HTML para una publicación de blog?

Probado en Jupyter 4.4.0.


9

Para aquellos que no pueden instalar wkhtmltopdf en sus sistemas, un método más que muchos ya mencionados en las respuestas a esta pregunta es simplemente descargar el archivo como un archivo html desde el cuaderno jupyter, subirlo a HTML a PDF y descargar los archivos PDF convertidos desde allí.

Aquí tiene su cuaderno IPython (.ipynb) convertido a formatos PDF (.pdf) y HTML (.html).



4

Solo esta respuesta le sería útil si tiene fórmulas matemáticas y científicas en su documento. Incluso si no los tiene, funciona bien.

Manera de la GUI

  • abre el cuaderno jupyter abre el cuaderno jupyter
  • Vaya a Archivos> Descargar como> HTML o PDF a través de LaTeX Vaya a Archivos> Descargar como> HTML o PDF a través de LaTeX

  • Luego revise su carpeta de Descargas para el archivo. PD: Si LaTeX tuvo algún error al compilar el PDF, fallará. Si esto sucede, descargue el archivo HTML y luego use http://webpagetopdf.com/ o cualquier otro servicio similar para convertir el HTML a PDF.

Modo de línea de comandos

  • Abre la terminal
  • Navegue a la carpeta que contiene el cuaderno jupyter
  • escriba "jupyter nbconvert --to pdf your_jupyter_notebook.ipynb" PD: Si falla, pruebe la respuesta de Yogesh

4

Si está utilizando la versión en la nube de Sagemath , simplemente puede ir a la esquina izquierda,
seleccionar Archivo → Descargar como → Pdf vía LaTeX (.pdf)
Verifique la captura de pantalla si lo desea.
Captura de pantalla Convierta ipynb a pdf

Si no funciona por algún motivo, puede intentarlo de otra manera.
seleccione Archivo → Vista previa de impresión y luego en la vista previa
haga clic derecho → Imprimir y luego seleccione Guardar como PDF.


3

Todavía no puedo hacer que el pdf funcione. Los documentos implican que debería poder hacerlo funcionar con látex, por lo que tal vez mi látex no funcione. 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.

Sin embargo, HTML funciona muy bien usando 'diapositivas', ¡y es hermoso! $ ipython nbconvert --to slides myfile.ipynb ... [NbConvertApp] Writing 215220 bytes to myfile.slides.html

// Actualización 2014-11-07Fri .: La sintaxis de IPython v3 difiere, es más simple; $ ipython nbconvert --to PDF myfile.ipynb En todos los casos, parece que me faltaba la biblioteca 'pdflatex'. Estoy investigando eso.


intente: $ ipython nbconvert your_file.ipynb --to latex --post PDF
moldovean

ty @moldovean por enviarme un ping para echar otro vistazo a esto. Más búsquedas en Google acaban de revelar el problema. El orden de los argumentos no importaba, todavía obtenía "No existe ese archivo o directorio".
AnneTheAgile

ese es un tema interesante. Tal vez ... solo tal vez reinstalar ipython ayude ... Realmente no lo sé :(
moldovean

@moldovean, resulta que ciertas bibliotecas son necesarias, pero ipynb no las instala. En este caso, necesito al menos pdflatex en mi camino. Consulte mi PR para mejorar la comprobación de errores, github.com/ipython/ipython/pull/6884
AnneTheAgile

3

Puede hacerlo primero convirtiendo el cuaderno a HTML y luego a formato PDF:

Los siguientes pasos que he implementado en: SO: Ubuntu, cuaderno Anaconda-Jupyter, Python 3

1 Guarde el Bloc de notas en formato HTML:

  1. Inicie el cuaderno de jupyter que desea guardar en formato HTML. Primero guarde el cuaderno correctamente para que el archivo HTML tenga la última versión guardada de su código / cuaderno.

  2. Ejecute el siguiente comando desde el propio cuaderno:

    !jupyter nbconvert --to html your_notebook_name.ipynb

Después de la ejecución, se creará la versión HTML de su cuaderno y se guardará en el directorio de trabajo actual. Verá que se agregará un archivo html al directorio actual con el your_notebook_name.htmlnombre

( your_notebook_name.ipynb-> your_notebook_name.html).

2 Guarde html como PDF:

  1. Ahora abra ese your_notebook_name.htmlarchivo (haga clic en él). Se abrirá en una nueva pestaña de su navegador.
  2. Ahora ve a la opción de imprimir. Desde aquí puede guardar este archivo en formato de archivo pdf.

Tenga en cuenta que desde la opción de impresión también tenemos la flexibilidad de seleccionar una parte de un cuaderno para guardar en formato pdf.


2

He estado buscando una forma de guardar cuadernos como html, ya que cada vez que intento descargarlos como html con mi nueva instalación de Jupyter, siempre aparece un 500 : Internal Server Error The error was: nbconvert failed: validate() got an unexpected keyword argument 'relax_add_props'error. Por extraño que parezca, he descubierto que descargar como html es tan simple como:

  1. Clic izquierdo en el cuaderno
  2. Haga clic en 'Guardar como ...' en el menú desplegable
  3. Guardar en consecuencia

Sin vista previa de impresión, sin impresión, sin nbconvert. Usando Jupyter Version: 1.0.0. Solo una sugerencia para probar (obviamente, no todas las configuraciones son iguales).


2

Encuentro que el método más fácil para convertir un cuaderno que está en la web a pdf es verlo primero en el servicio web nbviewer . Luego puede imprimirlo en un archivo pdf. Si el cuaderno está en su unidad local, cárguelo primero en un repositorio de github y use su URL para nbviewer.


2

Otros enfoques sugeridos:

  1. Usando 'Imprimir y luego seleccione guardar como pdf'. de su archivo HTML resultará en la pérdida de bordes de borde, resaltado de sintaxis, recorte de trazados, etc.

  2. Algunas otras bibliotecas han demostrado estar rotas cuando se trata de usar versiones obsoletas.

Solución: Una opción mejor y sin complicaciones es utilizar un convertidor en línea https://www.sejda.com/html-to-pdf que convertirá la versión * .html de su * .ipynb a * .pdf.

Pasos:

  1. Primero, desde la interfaz de su portátil Jupyter, convierta su * .ipynb a * .html usando

Archivo> Descargar como> HTML (.html)

  1. Sube el archivo * .html recién creado a https://www.sejda.com/html-to-pdf y luego selecciona la opción HTML a PDF.

  2. Su archivo pdf ya está listo para descargar.

  3. Ahora tiene archivos .ipynb, .html y .pdf


2

Combiné algunas respuestas anteriores en python en línea que puede agregar a ~ / .bashrc o ~ / .zshrc para compilar y convertir muchos cuadernos en un solo archivo 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 * 
}

2

La versión simple de pitón de la respuesta de partizanos .

  • abra Terminal (Linux, MacOS) o llegue al punto donde puede ejecutar archivos Python en Windows
  • Escriba el siguiente código en un archivo .py (digamos tejas.py)
import os

[os.system("jupyter nbconvert --to pdf " + f) for f in os.listdir(".") if f.endswith("ipynb")]
  • Navegue a la carpeta que contiene los cuadernos de jupyter
  • Asegúrese de que tejas.py esté en la carpeta actual. Cópielo en la carpeta actual si es necesario.
  • escriba "python tejas.py"
  • Trabajo hecho

El uso --template reportcomo opción adicional compila también una ToC para el pdf resultante tomando los diferentes encabezados de rebajas en el cuaderno.
Stefan

2

cuaderno-como-pdfInstalar

python -m pip instalar cuaderno-como-pdf pyppeteer-install

Usarlo

También puede usarlo con nbconvert:

jupyter-nbconvert: a PDF a través del nombre de archivo HTML.ipynb

que creará un archivo llamado filename.pdf.

o instalar pip notebook-as-pdf

crear pdf desde el cuaderno jupyter-nbconvert-toPDFviaHTML


Gracias, esto funcionó bien para mí. Probé esto por primera vez en un entorno Python 3.6.8 pero encontré algunos problemas. Luego actualicé a un entorno Python 3.7.8, basado en Conda, y funcionó como un encanto.
mastDrinkNimbuPani

Esto se debe a que asyncio es una dependencia del paquete, y en algún lugar del código hay un asyncio.run que es un método solo 3.7.
mastDrinkNimbuPani

0

Creo que la forma más sencilla es 'Ctrl + P'> guardar como 'pdf'. Eso es.


Esto mostraría los bloques de código
Dani LA

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.