Linux फ़ाउंडेशन प्रोजेक्ट

इस पेज पर Google Docs के सीज़न के लिए स्वीकार किए गए एक तकनीकी लेखन प्रोजेक्ट की जानकारी है.

प्रोजेक्ट की खास जानकारी

ओपन सोर्स संगठन:
Linux फ़ाउंडेशन
तकनीकी लेखक:
PIYUSHgoyal16
प्रोजेक्ट का नाम:
प्रिंटर ऐप्लिकेशन में प्रिंटर/स्कैनर ड्राइवर के लिए ट्यूटोरियल और डिज़ाइन से जुड़े दिशा-निर्देश
प्रोजेक्ट की अवधि:
मानक अवधि (तीन महीने)

प्रोजेक्ट का विवरण

खास जानकारी

क्लासिक प्रिंटर ड्राइवर में प्रिंटर के लिए खास फ़िल्टर और पीपीडी (पोस्टस्क्रिप्ट प्रिंटर का ब्यौरा) शामिल होता है. यह प्रिंटर की क्षमताओं और कॉल किए जाने वाले फ़िल्टर के बारे में बताता है. इन फ़ाइलों को फ़ाइल सिस्टम की कुछ डायरेक्ट्री में शामिल नहीं किया जाता है. ऐसे प्रिंटर ड्राइवर को तथाकथित प्रिंटर ऐप्लिकेशन से बदल दिया जाता है. ये प्रिंटर आईपीपी नेटवर्क प्रिंटर की नकल करते हैं.

ज़्यादातर आधुनिक प्रिंटर आईपीपी प्रिंटर होते हैं जो बिना ड्राइवर के प्रिंट करने की सुविधा देते हैं. वे खुद को डीएनएस-एसडी के ज़रिए विज्ञापन देते हैं, क्लाइंट आईपीपी अनुरोधों के ज़रिए अपनी क्षमता की जानकारी पा सकते हैं और प्रिंट जॉब के लिए स्टैंडर्ड डेटा फ़ॉर्मैट का इस्तेमाल कर सकते हैं. ऐसे प्रिंटर जो यह सुविधा नहीं देते. आम तौर पर, लेगसी या खास तरह के प्रिंटर के लिए प्रिंटर ड्राइवर की ज़रूरत होती है.

प्रिंटर ऐप्लिकेशन एक डीमन है, जो साथ काम करने वाले प्रिंटर की पहचान करता है और उन प्रिंटर को localhost पर IPP Everywhere प्रिंटर के रूप में दिखाता है. प्रिंटर ऐप्लिकेशन में ऐसा सॉफ़्टवेयर होता है जो आने वाले जॉब को उन प्रिंटर पर प्रिंट करता है जो इसके साथ काम करते हैं. यह डेटा को प्रिंटर की मूल भाषा में बदल देता है. साथ ही, अनुरोध करने पर क्लाइंट को प्रिंटर की क्षमताओं के बारे में जानकारी देता है. प्रिंटर ऐप्लिकेशन में एक वेब एडमिन इंटरफ़ेस भी होता है, जैसे कि असल नेटवर्क प्रिंटर.

जैसा कि हम जानते हैं, Linux, सैंडबॉक्स की गई पैकेजिंग (उदाहरण के लिए, Snap) पर काम कर रहा है. साथ ही, प्रिंटिंग भी इस दिशा में काम कर रही है. सैंडबॉक्स किए गए पैकेज में, डायरेक्ट्री के कॉन्टेंट बनने के बाद, हम उसमें बदलाव नहीं कर सकते. हमारा सिस्टम अब मॉड्यूलर नहीं है. हम यह नहीं चुन सकते कि किस प्रिंटर ड्राइवर पैकेज को इंस्टॉल करना है. प्रिंटर ऐप्लिकेशन, मॉड्यूलरिटी की इस समस्या को ठीक करते हैं. साथ ही, ये हमें प्रिंटर ड्राइवर की तरह ही आज़ादी देते हैं.

Snaps में प्रिंटर और स्कैनर के ड्राइवर न सिर्फ़ स्नैप किए गए सीयूपीएस और स्नैप किए गए ऐप्लिकेशन के लिए ज़रूरी हैं, बल्कि वे पूरी तरह से क्लासिक सिस्टम पर भी काम करते हैं. ये क्लास के हिसाब से पैकेज किए गए ड्राइवर के मुकाबले ओएस-डिस्ट्रिब्यूशन-इंडिपेंडेंट होते हैं. आप एक प्रिंटर ड्राइवर Snap बनाते हैं और यह स्नैप किए गए सभी OS डिस्ट्रिब्यूशन पर काम करता है. हर डिस्ट्रिब्यूशन और उनके वर्शन के लिए, प्रिंटर ड्राइवर को अलग-अलग पैकेज करने और डिपेंडेंसी हेल में चलाने की ज़रूरत नहीं होती. दूसरा फ़ायदा यह है कि PostScript प्रिंटर से मिलने वाली पीपीडी फ़ाइलों की पुरानी अवधारणा अब बंद हो गई है. इसके अलावा, फ़ाइलों को सीयूपीएस सिस्टम में छोड़ने के बजाय, CUPS सिस्टम और प्रिंटर ड्राइवर को एक आईपी कनेक्शन के ज़रिए जोड़कर, सीयूपीएस सिस्टम और प्रिंटर ऐप्लिकेशन, दोनों को सैंडबॉक्स किए गए अलग-अलग पैकेज में रखा जा सकता है.

मुझे इस तरह की पैकेजिंग के लिए, प्रिंटर और स्कैनर के लिए ड्राइवर डिज़ाइन करने और उन्हें Snaps में पैकेज करने के तरीके के बारे में बताना होगा. हमारा मकसद है कि आने वाले समय में प्रिंटर या स्कैनर बनाने वाले सभी ड्राइवर, खास तौर पर हार्डवेयर बनाने वाली कंपनियों की मदद की जाए, ताकि वे भी सही तरीके से काम कर पाएं.

प्रिंटर ऐप्लिकेशन के वर्कफ़्लो की खास जानकारी, दिए गए फ़्लोचार्ट से दी जा सकती है:

ऐसे प्रिंटर/स्कैनर ऐप्लिकेशन बनाने के लिए PAPPL एक लाइब्रेरी है, जो इसके लिए सबसे ज़्यादा सुविधाएं मुहैया कराती है. साथ ही, वे कप-फ़िल्टर भी होते हैं जिनमें प्रिंटर ऐप्लिकेशन के लिए इस्तेमाल किए जाने वाले कोड होते हैं. इस सिद्धांत पर अब भी काम चल रहा है. खास तौर पर, इस साल के 'Google समर ऑफ़ कोड' में. हालांकि, 14 सितंबर से दस्तावेज़ लिखने की अवधि शुरू होने के बाद, GSoC की कोडिंग पीरियड पहले ही खत्म हो चुकी है. ऐसे में OpenPrinting को ट्यूटोरियल की ज़रूरत होती है.

प्रिंटर ड्राइवर के लिए टेंप्लेट नौकरी के डेटा का स्ट्रक्चर तय करें

मीडिया साइज़ के लिए कॉन्सटैंट ऐरे का एलान करें

फ़ंक्शन का एलान करें i) कॉलबैक या इनिट ड्राइवर का नाम, ड्राइवर डेटा वगैरह स्वीकार करने वाला बूलियन फ़ंक्शन है और उसके हिसाब से ड्राइवर एट्रिब्यूट सेट करता है. अगर दिया गया ब्यौरा सही है, तो पूरा न होने पर यह सही और गलत दिखाता है.

ii) प्रिंट करें बूलियन फ़ंक्शन के ज़रिए नौकरी और डिवाइस के विकल्प स्वीकार किए जा रहे हैं. यह फ़ाइल को प्रिंट करता है और सफल होने पर सही और विफल होने पर गलत दिखाता है.

iii) रेनजॉब बूलियन फ़ंक्शन नौकरी, नौकरी के विकल्प, और डिवाइस स्वीकार करता है. यह नौकरी खत्म होने पर सही और सफलता न मिलने पर गलत जानकारी देता है.

iv) प्रज़ेंटेशन बूलियन फ़ंक्शन जॉब, काम के विकल्प, डिवाइस, और पेज नंबर स्वीकार कर रहा हो. यह पेज को खत्म करता है और सफल होने पर सही और विफल होने पर गलत दिखाता है.

v) rstartjob बूलियन फ़ंक्शन के ज़रिए नौकरी, काम और डिवाइस के विकल्प स्वीकार किए जा रहे हैं. यह काम की शुरुआत करता है और कामयाबी मिलने पर सही और असफल होने पर गलत जानकारी देता है.

vi) rstartpage बूलियन फ़ंक्शन जॉब, काम के विकल्प, डिवाइस, और पेज नंबर स्वीकार कर रहा है. यह पेज को शुरू करता है. साथ ही, सफलता मिलने पर सही और असफल होने पर 'गलत' दिखाता है.

vii) रीराइट बूलियन फ़ंक्शन स्वीकार करना, जॉब के विकल्प, डिवाइस, लाइन नंबर, और कैरेक्टर अरे. यह लाइन को लिखता है और सफलता पर सही और गड़बड़ी होने पर 'गलत' दिखाता है. viii) वैकल्पिक फ़ंक्शन, जैसे कि पहचान करना (उपलब्ध कराई गई कार्रवाई के आधार पर प्रिंटर को पहचानने में मदद करना), कंप्रेस करना(ग्राफ़िक्स की एक लाइन को कंप्रेस करना) वगैरह