À propos du projet
## Aperçu du projet
cups-web-print est un service d'impression web basé sur Python Flask et CUPS, fournissant une interface graphique HTTP pour les serveurs d'impression CUPS. Il peut transformer une imprimante USB connectée au serveur en imprimante réseau, permettant aux appareils du réseau local d'effectuer des impressions via navigateur, sans nécessiter l'installation de pilotes ou la configuration de files d'attente sur chaque appareil.
## Capacités principales
### Gestion des fichiers
- Prise en charge de PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, TXT, RTF et des formats image tels que JPG, JPEG, PNG, GIF, BMP, SVG
- Prise en charge du téléversement par glisser-déposer
- Aperçu en ligne : aperçu PDF sur ordinateur, aperçu image sur mobile
- Affichage et suppression de la liste des fichiers
### Paramètres d'impression
- Format papier : bureau A1-A4, photo 5-10 pouces, etc.
- Type de papier : papier ordinaire, papier photo brillant, etc.
- Mode couleur : couleur / noir et blanc
- Impression recto-verso : simple face, recto-verso bord long, recto-verso bord court
- Orientation : portrait / paysage
- Nombre de copies : 1-99
- Plage de pages : par exemple 1-5 8 10-12
- Échelle d'impression : automatique / ajuster / remplir / sans échelle
- Miroir de page : prise en charge de la rotation horizontale
### Gestion des tâches
- Détection de l'état en ligne de l'imprimante (uniquement pour les imprimantes IPP)
- Surveillance de l'état en temps réel : soumise / en traitement / terminée / échouée / annulée
- Affichage de la progression (basé sur le temps et l'estimation de la file d'attente CUPS)
- Annulation de tâche
- Affichage en temps réel de la file d'impression
- Informations sur le bac, la cartouche, l'imprimante (durée de fonctionnement, version du firmware, alertes, etc.), obtenues via le protocole IPP
### Sécurité
- Protection contre les attaques de traversée de chemin
- Vérification de la liste blanche des types de fichiers
- Limite de taille de fichier de 100 Mo
- Rotation automatique des journaux
- Nettoyage automatique du cache d'aperçu lors de la suppression de fichiers
### Interface bilingue
- Interface chinoise : http://localhost:5000/zh
- Interface anglaise : http://localhost:5000/en
## Pile technologique
- Backend : Python 3.9+ avec Flask 3.0+
- Frontend : HTML5 avec Tailwind CSS (CDN)
- Service d'impression : CUPS 2.0+
- Conversion de documents : LibreOffice 6.0+
- Traitement PDF : poppler-utils (pdftoppm), pdftk
- Protocole IPP : ipptool (cups-client)
## Notes de compatibilité
Le projet utilise le protocole standard IPP et les commandes standard CUPS, et est théoriquement compatible avec la plupart des imprimantes prenant en charge le protocole IPP. Le README indique qu'il a été testé sur Canon G3881 ; d'autres imprimantes nécessitent une vérification par vous-même.
## Méthodes de déploiement
### Installation par conteneur (recommandé)
Exécution via Docker, avec mapping des ports 5000 (interface web) et 631 (CUPS), et montage des répertoires de configuration CUPS, de files d'attente, de journaux, ainsi que des répertoires de téléversement et d'aperçu. Les imprimantes USB nécessitent le mode privilégié et le montage des périphériques USB ; seuls les réseaux d'imprimantes peuvent supprimer ces deux éléments.
Exemple d'ajout d'imprimante (imprimante réseau) :
```
docker exec cups-web-print lpadmin -p Canon_G3881 -v ipp://192.168.1.16:631/ipp/print -m everywhere -E
```
### Installation locale
Nécessite l'installation de cups, cups-client, composants LibreOffice, poppler-utils, pdftk et des dépendances Python, puis démarrer le service CUPS, ajouter l'imprimante avec lpadmin, et exécuter app.py. Le README fournit également une option recommandée pour le démarrage automatique via crontab.
## Structure du répertoire
- app.py : fichier principal de l'application Flask
- ipp_client.py : obtention des informations sur le bac et la cartouche via IPP
- printer_checker.py : confirmation de l'état en ligne de l'imprimante via IPP, BJNP, etc.
- templates/ : index.html (page d'accueil chinoise) et index_en.html (page d'accueil anglaise)
- uploads/ et previews/ : répertoires pour les fichiers téléversés et les aperçus
## Dépannage
README fournit une liste de dépannage relativement complète, couvrant : échec d'ajout d'imprimante via lpadmin (y compris les différences d'adresses IPP par marque, le mode sans pilote, cupsenable/cupsaccept), port 5000 sans réponse (processus, écoute du port, pare-feu, adresse de liaison Flask), aucune imprimante disponible sur la page, échec de conversion de documents, échec de génération d'aperçu PDF, échec d'extraction de plage de pages, impossible d'obtenir les informations de cartouche/bac, et cas « succès indiqué mais aucune sortie » (nécessite la vérification du paramètre -m everywhere, des pilotes CUPS et du fichier PPD, de l'état d'inactivité de l'imprimante et des journaux CUPS).
## Licence
GPLv3. README déclare que le logiciel est fourni « tel quel », l'auteur n'assume aucune responsabilité quant aux conséquences de son utilisation.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.