প্রকল্প সম্পর্কে

## প্রকল্পের সংক্ষিপ্ত বিবরণ cups-web-print হলো Python Flask এবং CUPS-ভিত্তিক একটি ওয়েব প্রিন্টিং সেবা, যা CUPS প্রিন্ট সার্ভারের জন্য HTTP গ্রাফিক্যাল ইন্টারফেস প্রদান করে। এটি সার্ভারে সংযুক্ত 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 কনফিগারেশন, কিউ, লগ serta আপলোড ও প্রিভিউ ডিরেক্টরি মাউন্ট করা হয়। 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-তে ঘোষণা করা হয়েছে সফটওয়্যার "যেমন আছে তেমন" প্রদান করা হয়, লেখক ব্যবহারের পরিণতির জন্য দায়ী নন।