इस प्रोजेक्ट के बारे में

## परियोजना अवलोकन cups-web-print एक Python Flask और CUPS पर आधारित वेब प्रिंटिंग सेवा है, जो CUPS प्रिंट सर्वर के लिए HTTP ग्राफिकल इंटरफ़ेस प्रदान करती है। यह सर्वर से जुड़े USB प्रिंटर को नेटवर्क प्रिंटर में बदल सकती है, जिससे LAN में डिवाइस ब्राउज़र के माध्यम से प्रिंट कर सकते हैं, बिना प्रत्येक डिवाइस पर ड्राइवर स्थापित करने या प्रिंट कतार कॉन्फ़िगर करने की आवश्यकता के। ## मुख्य क्षमताएँ ### फ़ाइल प्रबंधन - PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, TXT, RTF और JPG, JPEG, PNG, GIF, BMP, SVG जैसे छवि प्रारूपों का समर्थन करता है - ड्रैग-एंड-ड्रॉप अपलोड का समर्थन करता है - ऑनलाइन पूर्वावलोकन: कंप्यूटर पर PDF पूर्वावलोकन, मोबाइल पर छवि पूर्वावलोकन - फ़ाइल सूची देखना और हटाना ### प्रिंट सेटिंग्स - कागज़ का आकार: कार्यालय A1-A4, फोटो 5-10 इंच आदि - कागज़ सामग्री: सादा कागज़, चमकदार फोटो पेपर आदि - रंग मोड: रंगीन / श्वेत-श्याम - दो तरफा प्रिंटिंग: एक तरफा, दो तरफा लंबे किनारे बाइंडिंग, दो तरफा छोटे किनारे बाइंडिंग - प्रिंट दिशा: पोर्ट्रेट / लैंडस्केप - प्रिंट प्रतियाँ: 1-99 प्रतियाँ - पृष्ठ सीमा: जैसे 1-5 8 10-12 - प्रिंट स्केलिंग: स्वचालित / फिट / भरें / कोई स्केलिंग नहीं - पृष्ठ मिररिंग: क्षैतिज फ्लिप का समर्थन करता है ### कार्य प्रबंधन - प्रिंटर ऑनलाइन स्थिति जाँच (केवल IPP प्रिंटर के लिए) - वास्तविक समय कार्य स्थिति निगरानी: सबमिट किया गया / प्रोसेसिंग / पूर्ण / विफल / रद्द - कार्य प्रगति प्रदर्शन (समय और CUPS कतार के आधार पर अनुमानित) - कार्य रद्द करना - प्रिंट कतार वास्तविक समय देखना - पेपर ट्रे जानकारी, इंक कार्ट्रिज जानकारी, प्रिंटर जानकारी (रनटाइम, फर्मवेयर संस्करण, अलर्ट आदि), सभी IPP प्रोटोकॉल के माध्यम से प्राप्त ### सुरक्षा सुरक्षा - पथ ट्रैवर्सल हमले से सुरक्षा - फ़ाइल प्रकार श्वेतसूची सत्यापन - फ़ाइल आकार सीमा 100MB - लॉग स्वचालित रोटेशन - फ़ाइल हटाते समय पूर्वावलोकन कैश स्वचालित सफाई ### द्विभाषी इंटरफ़ेस - चीनी इंटरफ़ेस: http://localhost:5000/zh - अंग्रेज़ी इंटरफ़ेस: http://localhost:5000/en ## तकनीकी स्टैक - बैकएंड: Python 3.9+ और Flask 3.0+ - फ्रंटएंड: HTML5 और Tailwind CSS (CDN) - प्रिंट सेवा: CUPS 2.0+ - दस्तावेज़ रूपांतरण: LibreOffice 6.0+ - PDF प्रोसेसिंग: poppler-utils (pdftoppm), pdftk - IPP प्रोटोकॉल: ipptool (cups-client) ## संगतता नोट परियोजना IPP मानक प्रोटोकॉल और CUPS मानक कमांड का उपयोग करती है, सैद्धांतिक रूप से अधिकांश प्रिंटर के साथ संगत है जो IPP प्रोटोकॉल का समर्थन करते हैं। README बताता है कि Canon G3881 पर परीक्षण किया गया है, अन्य प्रिंटरों को स्वयं सत्यापित करने की आवश्यकता है। ## तैनाती विधि ### कंटेनर स्थापना (अनुशंसित) Docker के माध्यम से चलाएँ, पोर्ट 5000 (वेब इंटरफ़ेस) और 631 (CUPS) मैप करें, और CUPS कॉन्फ़िगरेशन, कतारें, लॉग, साथ ही अपलोड और पूर्वावलोकन निर्देशिकाएँ माउंट करें। USB प्रिंटर को विशेषाधिकार मोड और USB डिवाइस माउंटिंग की आवश्यकता होती है; केवल नेटवर्क प्रिंटर का उपयोग करते समय इन दोनों को हटाया जा सकता है। प्रिंटर जोड़ने का उदाहरण (नेटवर्क प्रिंटर के उदाहरण के साथ): ``` docker exec cups-web-print lpadmin -p Canon_G3881 -v ipp://192.168.1.16:631/ipp/print -m everywhere -E ``` ### स्थानीय स्थापना cups, cups-client, LibreOffice घटक, poppler-utils, pdftk और Python निर्भरताएँ स्थापित करने की आवश्यकता है, CUPS सेवा शुरू करने के बाद lpadmin के साथ प्रिंटर जोड़ें, फिर app.py चलाएँ। README crontab के माध्यम से बूट पर स्वचालित प्रारंभ का वैकल्पिक तरीका भी देता है। ## निर्देशिका संरचना - app.py: Flask एप्लिकेशन मुख्य फ़ाइल - ipp_client.py: IPP के माध्यम से पेपर ट्रे, इंक कार्ट्रिज आदि स्थिति जानकारी प्राप्त करता है - printer_checker.py: IPP, BJNP आदि प्रोटोकॉल के माध्यम से प्रिंटर ऑनलाइन स्थिति की पुष्टि करता है - templates/: index.html (चीनी मुख्य पृष्ठ) और index_en.html (अंग्रेज़ी मुख्य पृष्ठ) - uploads/, previews/: अपलोड फ़ाइलें और पूर्वावलोकन फ़ाइल निर्देशिकाएँ ## समस्या निवारण README एक पूर्ण जाँच सूची प्रदान करता है, जिसमें शामिल है: lpadmin प्रिंटर जोड़ने में विफलता (विभिन्न ब्रांडों के IPP पते अंतर, ड्राइवरलेस मोड, cupsenable/cupsaccept सहित), पोर्ट 5000 पर कोई प्रतिक्रिया नहीं (प्रक्रिया, पोर्ट सुनना, फ़ायरवॉल, Flask बाइंडिंग पता), पृष्ठ पर कोई उपलब्ध प्रिंटर नहीं, दस्तावेज़ रूपांतरण विफलता, PDF पूर्वावलोकन निर्माण विफलता, पृष्ठ सीमा निष्कर्षण विफलता, इंक कार्ट्रिज/पेपर ट्रे जानकारी प्राप्त करने में असमर्थता, और "सफलता संकेत लेकिन कोई आउटपुट नहीं" की स्थिति (-m everywhere पैरामीटर, CUPS ड्राइवर और PPD फ़ाइल, प्रिंटर निष्क्रिय स्थिति और CUPS लॉग की पुष्टि करने की आवश्यकता)। ## लाइसेंस GPLv3। README घोषणा करता है कि सॉफ़्टवेयर "जैसा है" प्रदान किया गया है, लेखक उपयोग के परिणामों के लिए ज़िम्मेदार नहीं है।