عن المشروع
## نظرة عامة على المشروع
cups-web-print هي خدمة طباعة ويب مبنية على Python Flask وCUPS، توفر واجهة رسومية HTTP لخادم طباعة CUPS. يمكنها تحويل طابعة USB متصلة بالخادم إلى طابعة شبكية، بحيث يمكن للأجهزة داخل الشبكة المحلية إتمام الطباعة عبر المتصفح، دون الحاجة إلى تثبيت تعريفات أو إعداد قوائم طباعة على كل جهاز.
## القدرات الرئيسية
### إدارة الملفات
- دعم صيغ 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 بين العلامات التجارية، ووضع driverless، وcupsenable/cupsaccept)، وعدم استجابة المنفذ 5000 (العملية، واستماع المنفذ، والجدار الناري، وعنوان ربط Flask)، وعدم وجود طابعة متاحة في الصفحة، وفشل تحويل المستندات، وفشل إنشاء معاينة PDF، وفشل استخراج نطاق الصفحات، وتعذر الحصول على معلومات الحبر/الدرج، وحالة "الإشارة إلى النجاح دون إخراج" (يلزم تأكيد معامل -m everywhere، وتعريف CUPS وملف PPD، وحالة خمول الطابعة وسجلات CUPS).
## الترخيص
GPLv3. يعلن README أن البرنامج يُقدَّم "كما هو"، ولا يتحمل المؤلف مسؤولية نتائج الاستخدام.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.