- Ajout --from=markdown et --to=pdf pour conversion explicite - Ajout --standalone pour document complet - Correction dialogue options impression (suppression --set-value) - Ajout logs débogage pour diagnostic - Support preview et print avec dialogue options - Correction gestion orientation CUPS (pas de conflit PDF/CUPS) - Suppression fit-to-page problématique
MD_to_Print - Script automatique Markdown → PDF → Impression
Application CLI complète pour convertir des fichiers Markdown en PDF et les imprimer automatiquement sur Debian/Linux, avec support Docker, prévisualisation, options d'impression avancées, et gestion d'erreurs robuste.
Fonctionnalités
- Conversion automatique Markdown → PDF avec Pandoc
- Prévisualisation avant impression (evince/okular/xdg-open)
- Options d'impression avancées (copies, pages, orientation, qualité, couleur, recto-verso)
- Fichier de configuration optionnel (format INI)
- Installation automatique des dépendances
- Support Docker pour isolation et portabilité
- Gestion d'erreurs complète avec codes de retour appropriés
- Système de logging détaillé avec niveaux (DEBUG, INFO, WARN, ERROR)
- Interface en ligne de commande avec options complètes
- Intégration bureau : Menu contextuel MATE/Caja avec sélection multiple
Installation
Installation locale
- Cloner ou télécharger le projet:
cd MD_to_print
chmod +x md_to_print.sh
- Installer les dépendances manuellement ou automatiquement:
# Installation automatique
./md_to_print.sh --install-deps
# Ou installation manuelle
sudo apt-get update
sudo apt-get install -y pandoc texlive-latex-base texlive-fonts-recommended \
texlive-latex-extra texlive-lang-french cups
- (Optionnel) Installation système:
make install
Installation avec Docker
Note importante sur le temps de construction : La première construction de l'image Docker peut prendre 5-10 minutes car elle doit télécharger et installer les packages TeX Live (plusieurs centaines de MB). C'est normal et nécessaire pour la conversion PDF. Les constructions suivantes seront beaucoup plus rapides grâce au cache Docker.
Pour accélérer la construction :
- Utilisez le cache Docker : ne reconstruisez que si nécessaire
- Utilisez
docker build --cache-from md-to-print:latestpour réutiliser le cache - Une fois construite, l'image est réutilisable indéfiniment
- Construire l'image Docker:
make build
# ou
docker build -t md-to-print:latest .
- Créer les répertoires nécessaires:
mkdir -p documents output logs
Utilisation
Utilisation locale
Commande de base
./md_to_print.sh document.md
Avec prévisualisation
./md_to_print.sh document.md --preview
Options avancées
./md_to_print.sh document.md \
--printer HP_LaserJet \
--copies 2 \
--color \
--duplex duplex \
--quality high \
--pages 1-5 \
--orientation landscape \
--keep-pdf
Avec fichier de configuration
# Créer votre configuration
cp config.example.conf config.conf
# Éditer config.conf selon vos besoins
# Utiliser la configuration
./md_to_print.sh document.md --config config.conf
Utilisation avec Docker
Via le wrapper script
chmod +x docker_run.sh
./docker_run.sh documents/mon_fichier.md --preview
Directement avec docker
docker run --rm -it \
-v $(pwd)/documents:/workspace/documents:ro \
-v $(pwd)/output:/workspace/output \
-v $(pwd)/logs:/workspace/logs \
--network host \
md-to-print:latest \
/workspace/documents/document.md --preview
Via Docker Compose
# Modifier docker-compose.yml si nécessaire
docker-compose run --rm md-to-print \
/workspace/documents/document.md --preview
Via Makefile
# Construire l'image
make build
# Tester avec fichier exemple
make test
# Ouvrir un shell dans le conteneur
make shell
# Nettoyer les fichiers générés
make clean
Utilisation de bureau (MATE/Caja)
MD_to_Print peut être intégré dans votre environnement de bureau MATE pour une utilisation via le menu contextuel (clic droit).
Installation de l'intégration bureau
IMPORTANT : Caja nécessite l'extension caja-actions pour afficher les actions dans le menu contextuel.
- Installer caja-actions (requis):
sudo apt-get install caja-actions
- Installation automatique (recommandée):
cd MD_to_print
./desktop/install-desktop.sh
- Configuration Caja Actions (important):
# Ouvrir l'outil de configuration
caja-actions-config-tool
Dans l'outil de configuration :
- Allez dans Édition > Préférences
- Onglet Préférences d'exécution
- Désactivez l'option "Créer un menu racine 'Caja-Actions'"
- Cela permet aux actions d'apparaître directement dans le menu contextuel
- Redémarrer Caja pour voir les nouvelles actions:
caja -q
Utilisation depuis le menu contextuel
Une fois installé, les actions suivantes sont disponibles dans le menu contextuel (clic droit) sur les fichiers .md:
- "Imprimer avec MD_to_Print" : Conversion + Impression directe
- "Convertir en PDF (MD_to_Print)" : Conversion uniquement, sans impression
- "Prévisualiser avant impression" : Conversion + Prévisualisation + Impression optionnelle
Fonctionnalités
- ✅ Sélection multiple : Traitez plusieurs fichiers en une seule fois
- ✅ Notifications de bureau : Feedback visuel pour chaque étape
- ✅ Détection automatique : Utilise l'installation locale ou Docker selon disponibilité
- ✅ Gestion d'erreurs : Messages clairs en cas de problème
- ✅ Confirmation : Dialogue de confirmation pour traitement multiple
Exemples d'utilisation
Sélection unique :
- Clic droit sur
document.md - Sélectionner "Imprimer avec MD_to_Print"
- Le fichier est converti et imprimé automatiquement
Sélection multiple :
- Sélectionner plusieurs fichiers
.md(Ctrl+Clic) - Clic droit → "Convertir en PDF (MD_to_Print)"
- Confirmer le traitement multiple
- Tous les fichiers sont convertis séquentiellement avec notifications
Désinstallation
Pour désinstaller l'intégration bureau:
./desktop/install-desktop.sh --uninstall
Dépendances bureau
Critique :
caja-actions: Extension Caja pour les actions personnalisées (REQUIS)
Optionnelles :
zenityouyad: Dialogues graphiqueslibnotify-bin: Notifications (notify-send)caja: Gestionnaire de fichiers MATE (déjà installé)
Installation des dépendances:
sudo apt-get install caja-actions zenity libnotify-bin
Dépannage menu contextuel
Les actions n'apparaissent pas dans le menu :
# 1. Vérifier que caja-actions est installé (CRITIQUE)
dpkg -l | grep caja-actions
# Si absent: sudo apt-get install caja-actions
# 2. Vérifier que les fichiers .desktop sont installés
ls ~/.local/share/caja/actions/md-to-print-*.desktop
# 3. Ouvrir l'outil de configuration Caja Actions
caja-actions-config-tool
# Vérifier que les actions sont présentes et activées
# Dans Préférences: désactiver "Créer un menu racine Caja-Actions"
# 4. Vérifier que les scripts sont dans le PATH
which md_to_print_gui.sh
# 5. Redémarrer Caja
caja -q
Erreur "md_to_print_gui.sh: command not found" :
# Vérifier l'installation
./desktop/install-desktop.sh
# Vérifier que ~/.local/bin est dans le PATH
echo $PATH | grep -q ".local/bin" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Notifications ne s'affichent pas :
# Vérifier que libnotify est installé
dpkg -l | grep libnotify-bin
# Tester manuellement
notify-send "Test" "Les notifications fonctionnent"
Options disponibles
| Option | Description | Défaut |
|---|---|---|
-p, --preview |
Prévisualiser le PDF avant impression | false |
-P, --printer NOM |
Spécifier l'imprimante | Imprimante système |
-c, --copies N |
Nombre de copies | 1 |
-r, --pages RANGE |
Pages à imprimer (ex: 1-3,5,7-9) | Toutes |
-o, --orientation DIR |
Orientation (portrait/landscape) | portrait |
-s, --size SIZE |
Taille du papier (A4, A3, Letter, etc.) | A4 |
-q, --quality QUALITY |
Qualité (draft, normal, high) | normal |
-C, --color |
Impression en couleur | false |
-d, --duplex MODE |
Mode recto-verso (none, simplex, duplex) | none |
-i, --install-deps |
Installer les dépendances automatiquement | false |
-k, --keep-pdf |
Conserver le fichier PDF après impression | false |
--config FILE |
Fichier de configuration | Aucun |
-v, --verbose |
Mode verbeux (logging DEBUG) | false |
-l, --log FILE |
Fichier de log | Aucun |
-h, --help |
Afficher l'aide | - |
--version |
Afficher la version | - |
Configuration
Le fichier de configuration utilise le format INI avec trois sections:
Section [default]
Options d'impression par défaut (printer, copies, orientation, size, quality, color, duplex, preview, keep_pdf)
Section [paths]
Chemins des répertoires (output_dir, log_dir)
Section [logging]
Paramètres de logging (level, file, verbose)
Exemple de fichier config.conf:
[default]
printer=HP_LaserJet
copies=1
orientation=portrait
size=A4
quality=normal
color=false
duplex=none
preview=false
keep_pdf=false
[paths]
output_dir=./output
log_dir=./logs
[logging]
level=INFO
file=md_to_print.log
verbose=false
Structure du projet
MD_to_print/
├── md_to_print.sh # Script principal
├── config.example.conf # Fichier de configuration exemple
├── Dockerfile # Configuration Docker
├── docker-compose.yml # Configuration Docker Compose
├── docker_run.sh # Wrapper Docker
├── Makefile # Commandes Make
├── desktop/ # Intégration bureau
│ ├── md-to-print-print.desktop # Action "Imprimer"
│ ├── md-to-print-convert.desktop # Action "Convertir"
│ ├── md-to-print-preview.desktop # Action "Prévisualiser"
│ └── install-desktop.sh # Script d'installation
├── scripts/ # Scripts utilitaires
│ ├── md_to_print_gui.sh # Wrapper GUI
│ └── md_to_print_notify.sh # Script notifications
├── .dockerignore # Fichiers à exclure du build Docker
├── .gitignore # Fichiers à ignorer dans Git
├── README.md # Documentation (ce fichier)
├── CHANGELOG.md # Historique des versions
├── documents/ # Fichiers Markdown sources
├── output/ # PDFs générés
└── logs/ # Fichiers de logs
Exemples d'utilisation
Impression simple
./md_to_print.sh rapport.md
Impression avec prévisualisation
./md_to_print.sh rapport.md --preview
Impression recto-verso en couleur
./md_to_print.sh rapport.md --duplex duplex --color --copies 2
Impression de pages spécifiques
./md_to_print.sh rapport.md --pages 1-10,15,20-25
Impression paysage haute qualité
./md_to_print.sh presentation.md --orientation landscape --quality high
Avec logging détaillé
./md_to_print.sh document.md --verbose --log mon_log.txt
Codes de retour
| Code | Signification |
|---|---|
| 0 | Succès |
| 1 | Erreur générale |
| 2 | Fichier introuvable |
| 3 | Dépendances manquantes |
| 4 | Erreur conversion PDF |
| 5 | Erreur impression |
| 6 | Erreur configuration |
| 7 | Erreur Docker |
| 8 | Permissions insuffisantes |
| 9 | Argument invalide |
| 10 | Imprimante non disponible |
Configuration de l'impression dans Docker
Pour que l'impression fonctionne depuis Docker, vous devez configurer l'accès à CUPS:
- Installer CUPS sur l'hôte:
sudo apt-get install cups
- Configurer le partage réseau dans
/etc/cups/cupsd.conf:
Listen localhost:631
Port 631
- Redémarrer CUPS:
sudo systemctl restart cups
- Le socket CUPS sera monté automatiquement via docker-compose.yml ou docker_run.sh
Dépannage
Erreur: "pandoc n'est pas installé"
./md_to_print.sh document.md --install-deps
Erreur: "Imprimante non disponible"
# Lister les imprimantes disponibles
lpstat -p
# Utiliser l'imprimante par défaut
./md_to_print.sh document.md
Erreur: "Permission de lecture refusée"
# Vérifier les permissions du fichier
ls -l document.md
# Donner les permissions de lecture
chmod +r document.md
Erreur Docker: "Cannot connect to the Docker daemon"
# Vérifier que Docker est démarré
sudo systemctl status docker
# Démarrer Docker si nécessaire
sudo systemctl start docker
# Ajouter votre utilisateur au groupe docker
sudo usermod -aG docker $USER
# Déconnexion/reconnexion nécessaire
Prévisualisation ne fonctionne pas dans Docker
La prévisualisation graphique nécessite l'accès X11. Assurez-vous que:
DISPLAYest défini dans votre environnement/tmp/.X11-unixest accessible- Les permissions X11 sont correctes:
xhost +local:docker
Dépendances
Dépendances système
- pandoc
- texlive-latex-base
- texlive-fonts-recommended
- texlive-latex-extra
- texlive-lang-french (support français)
- cups (pour l'impression)
- evince ou okular (pour la prévisualisation, optionnel)
Toutes les dépendances sont installées automatiquement avec l'option --install-deps ou dans l'image Docker.
Contribution
Les contributions sont les bienvenues! N'hésitez pas à:
- Signaler des bugs
- Proposer des améliorations
- Soumettre des pull requests
Licence
Ce projet est fourni tel quel, sans garantie.
Auteur
MD_to_Print - Script automatique Markdown → PDF → Impression
Historique
Voir CHANGELOG.md pour l'historique des versions.