syoul 5a67a0998c Documentation: intégration bureau et utilisation Docker
- Section intégration bureau avec instructions Caja Actions
- Détails sur options d'impression et dialogue interactif
- Guide dépannage pour problèmes courants
- Explications sur temps de build Docker
2025-12-25 16:38:43 +01:00

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

  1. Cloner ou télécharger le projet:
cd MD_to_print
chmod +x md_to_print.sh
  1. 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
  1. (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:latest pour réutiliser le cache
  • Une fois construite, l'image est réutilisable indéfiniment
  1. Construire l'image Docker:
make build
# ou
docker build -t md-to-print:latest .
  1. 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.

  1. Installer caja-actions (requis):
sudo apt-get install caja-actions
  1. Installation automatique (recommandée):
cd MD_to_print
./desktop/install-desktop.sh
  1. 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
  1. 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 :

  1. Clic droit sur document.md
  2. Sélectionner "Imprimer avec MD_to_Print"
  3. Le fichier est converti et imprimé automatiquement

Sélection multiple :

  1. Sélectionner plusieurs fichiers .md (Ctrl+Clic)
  2. Clic droit → "Convertir en PDF (MD_to_Print)"
  3. Confirmer le traitement multiple
  4. 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 :

  • zenity ou yad : Dialogues graphiques
  • libnotify-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:

  1. Installer CUPS sur l'hôte:
sudo apt-get install cups
  1. Configurer le partage réseau dans /etc/cups/cupsd.conf:
Listen localhost:631
Port 631
  1. Redémarrer CUPS:
sudo systemctl restart cups
  1. 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:

  • DISPLAY est défini dans votre environnement
  • /tmp/.X11-unix est 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.

Description
No description provided
Readme 97 KiB
Languages
Shell 91.6%
Makefile 5.5%
Dockerfile 2.9%