- Fichiers .desktop pour actions: Imprimer, Convertir, Prévisualiser - Script install-desktop.sh pour installation automatique - Support sélection multiple de fichiers - Compatible Caja Actions (MATE Desktop)
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
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
- 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
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
├── .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.