Esta pequeña utilidad proporciona una interfaz gráfica (Tkinter) para convertir archivos Jupyter Notebook (.ipynb) a HTML o PDF usando jupyter nbconvert.
Características
- Interfaz gráfica sencilla para seleccionar el notebook y elegir HTML o PDF.
- Opción para instalar automáticamente dependencias Python faltantes (usa
pipcon el mismo intérprete que ejecuta la app). - En Linux (Debian/Ubuntu) puede intentar instalar
pandocytexlive-xetexconsudo apt-getsi falta. - Limpia metadatos problemáticos del notebook antes de la conversión.
Detalles de la limpieza
- El conversor crea una copia "limpia" del notebook usando
nbformaty reconstuye las salidas (outputs) conservando sólo los campos permitidos por el esquema oficial. - Se omiten explícitamente las salidas de widgets (MIME types como
application/vnd.jupyter.widget-view+json) porque suelen incluir estado complejo que rompe la validación denbformatynbconvert.
Uso desde la GUI
- Ejecuta la app:
python3 ipynb2html.py- En la ventana: selecciona un archivo
.ipynb, marca la casilla "Instalar dependencias si faltan" si quieres que la app intente instalar paquetes automáticamente, elige HTML o PDF y pulsa "Convertir".
Línea de comandos (modo rápido)
Si prefieres no abrir la GUI puedes usar directamente jupyter nbconvert sobre el archivo creado por la función de limpieza; por ejemplo:
# Primero, desde Python, genera el archivo limpio (ejemplo de uso):
python3 - <<'PY'
import importlib.util
spec = importlib.util.spec_from_file_location('ipnbmod', 'ipynb2html.py')
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
conv = mod.NotebookConverter(master=None)
clean = conv.clean_notebook('MiNotebook.ipynb')
print(clean)
PY
# Luego convierte con nbconvert:
jupyter nbconvert MiNotebook.ipynb.clean --to html --template classicDependencias y notas
- Recomendado instalar en un entorno virtual (venv/virtualenv/conda).
requirements.txtcontiene las recomendaciones mínimas:nbconvert,pyppeteer,nbformat.- Para conversión a PDF pueden ser necesarias dependencias adicionales:
- Chromium (pyppeteer o playwright lo descargan/instalan),
pandocytexlive-xetexpara ciertos flujos de nbconvert (en Debian/Ubuntu se puede instalar consudo apt-get install pandoc texlive-xetex).
Solución de problemas
- Si nbconvert falla con errores de JSON o validación: asegúrate de ejecutar la limpieza (
clean_notebook) antes de convertir. La GUI lo hace automáticamente. - Si la instalación automática falla en Linux con
sudopídete ejecutar manualmente:sudo apt-get update && sudo apt-get install -y pandoc texlive-xetex - Para problemas con la descarga de Chromium por
pyppeteer, prueba a ejecutarpyppeteer-installo instalarplaywrighty ejecutarplaywright install.
Contacto
Si quieres que añada soporte de línea de comandos directo al script (por ejemplo --convert file.ipynb --format pdf), puedo añadirlo.
Archivos
ipynb2html.py- Aplicación principal (GUI).requirements.txt- Paquetes recomendados:nbconvert,pyppeteer.
Uso
- Ejecuta la app:
python3 ipynb2html.py- En la ventana: selecciona un archivo
.ipynb, marca la casilla "Instalar dependencias si faltan" si quieres que la app intente instalar paquetes automáticamente, elige HTML o PDF y pulsa "Convertir".
Notas
- La app intentará instalar paquetes con
pipusando el intérprete Python actual (por ejemplo,python3 -m pip install ...). - Para PDF, nbconvert puede necesitar un motor de navegación (Chromium) y paquetes TeX para renderizar libros complejos. Si la app no puede instalar Chromium o pandoc automáticamente, deberás instalarlos manualmente.
- Si tu entorno usa
playwrighten lugar depyppeteer, instalaplaywrighty correplaywright installsi es necesario.
Limitaciones
- La instalación automática de
pandocsolo soportada para Debian/Ubuntu medianteapt. - No se han incluido instaladores para gestores de paquetes distintos a
pipyapt.
Contribuciones
Si quieres mejorar la app (por ejemplo, añadir soporte para playwright), envía un parche o solicita cambios.