Intelligent IPYNB to HTML/PDF exporter with cell-level preprocessing.
Project description
📄 ipynb-pdf
Transformez vos Notebooks Jupyter en documents PDF professionnels et académiques.
ipynb-pdf est un outil de conversion avancé conçu pour les scientifiques, les chercheurs et les data scientists qui souhaitent produire des rapports, des articles ou des thèses directement depuis Jupyter, sans passer par LaTeX manuellement.
🚀 Pourquoi utiliser ipynb-pdf ?
- 📚 Gestion Intelligente des Références : Centralise automatiquement vos citations, dédoublonne les entrées et génère une bibliographie propre en fin de document.
- 🎨 Typographie Premium : Utilise des polices de haute qualité (Charter, Lato, Fira Code) et une mise en page soignée (marges, interlignage, césure).
- 🙈 Contrôle Granulaire : Masquez le code, les sorties ou certaines cellules spécifiques grâce à un système de tags simple (
hide_code,internal,remove_input). - ➗ Support Mathématique : Rendu impeccable des équations LaTeX.
- ⚙️ 100% Configurable : Adaptez tout via un simple fichier YAML (marges, polices, comportements).
📦 Installation
Prérequis
Ce projet utilise weasyprint pour la génération PDF.
- Windows : Vous aurez besoin de GTK3. Suivez les instructions officielles de WeasyPrint pour Windows.
- Linux/macOS : Installez les librairies graphiques nécessaires (ex:
pango,gdk-pixbuf).
🚀 Installation rapide (PyPI)
C'est la méthode recommandée. Ouvrez votre terminal et lancez :
pip install ipynb-pdf
Une fois installé, la commande ipynb-pdf est disponible partout dans votre système.
🔧 Installation depuis les sources (Développement)
Si vous souhaitez contribuer ou tester la dernière version non publiée :
git clone https://github.com/KpihX/ipynb-pdf.git
cd ipynb-pdf
pip install .
🛠️ Utilisation
Commande de base
Convertissez un notebook en une seule ligne de commande :
ipynb-pdf mon_notebook.ipynb
Avec configuration personnalisée
Pour un contrôle total sur le rendu, utilisez un fichier de configuration :
ipynb-pdf mon_notebook.ipynb --config config.yaml --output rapport_final.pdf
📂 Exemples
Le dossier examples/ contient tout ce qu'il faut pour démarrer :
1. Cas Simple (examples/simple_case/)
Une démonstration des fonctionnalités de base : masquage de code, tags, et formatage simple.
ipynb-pdf examples/simple_case/feature_demo.ipynb --config examples/simple_case/config.yaml
2. Cas Complexe (examples/complex_case/)
Un exemple réel de papier académique ("Algorithmes Randomisés") avec :
- Formules mathématiques complexes
- Figures et graphiques
- Bibliographie et citations croisées
- Mise en page stricte
ipynb-pdf examples/complex_case/RandomAlgorithms.ipynb --config examples/complex_case/config_RandomAlgorithms.yaml
⚙️ Configuration
Créez un fichier config.yaml pour surcharger les paramètres par défaut. Voici les options principales :
# === Apparence ===
pdf_margin_top: 2.5cm
pdf_margin_bottom: 2.5cm
text_font_family: "Charter, serif"
code_font_size: 9pt
# === Comportement ===
hide_code_by_default: false # Masquer tout le code par défaut ?
hide_execution_count: true # Masquer les [1]: ?
reflow_markdown: true # Reformater le texte Markdown ?
# === Tags Spéciaux ===
remove_cells_with_tag: ['remove', 'internal']
hide_code_with_tag: ['hide_code', 'secret']
partial_code_with_tag: ['partial'] # Montre seulement le début/fin du code
# === Bibliographie ===
centralize_references: true # Regrouper les références à la fin ?
🏗️ Structure du Projet
ipynb-pdf/
├── ipynb_pdf/ # 🐍 Code source du package
│ ├── css/ # 🎨 Feuilles de style CSS (Base, Typo, Code)
│ ├── templates/ # 📝 Templates HTML (Jinja2)
│ ├── utils/ # 🔧 Utilitaires (Preprocessing, Refs, Logs)
│ ├── cli.py # 💻 Point d'entrée ligne de commande
│ └── config.py # ⚙️ Gestion de la configuration
├── examples/ # 💡 Exemples (Simple & Complexe)
├── tests/ # 🧪 Tests unitaires (Pytest)
├── pyproject.toml # 📦 Métadonnées du projet
└── README.md # 📖 Ce fichier
🧪 Développement
Pour lancer la suite de tests et vous assurer que tout fonctionne :
pytest tests/
👤 Auteur
KpihX
📄 Licence
Ce projet est sous licence MIT. Vous êtes libre de l'utiliser, le modifier et le distribuer.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ipynb_pdf-0.1.2.tar.gz.
File metadata
- Download URL: ipynb_pdf-0.1.2.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0349e476df8d0b51bf40baa2531b40f80bd27fbed794b8477f1879c477a27b0e
|
|
| MD5 |
16375e2344a721ef5de2926a0e0a6443
|
|
| BLAKE2b-256 |
9c0ac698c62cd192e77d4f0a69c691bb7219b12a6c645a3b32c96e5bf37da619
|
File details
Details for the file ipynb_pdf-0.1.2-py3-none-any.whl.
File metadata
- Download URL: ipynb_pdf-0.1.2-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f6d27fe0f6918abe8768f8823a7dc8f2cde3901f4eeffbcf3bd742d02a7672a
|
|
| MD5 |
f4d9bfd9fac48585ff5e4d7f0ce0cc6e
|
|
| BLAKE2b-256 |
8d771679617b6d6e90adef5df5eef89552a441686ee8357cd35364badd656711
|