आप GNU \ Linux में एक सस्ते स्कैनर से इस तरह एक एमएफपी ले सकते हैं

कार्य मेरी कंपनी को पैसे बचाने में मदद करना था। ~ 22 हजार रूबल के लिए महंगे ज़ेरॉक्स 3300mfp MFPs न खरीदें, लेकिन इसे तात्कालिक या सस्ते साधनों के साथ करें।

उद्देश्यों:
1. एक नेटवर्क फ़ोल्डर में स्कैन करें
2. फोटोकॉपी दस्तावेज
3. स्कैन की गई इमेज से पीडीएफ बनाएं

हमारे पास क्या है:
1. पीसी चल रहा है कुबंटु 12.04.1x64 (परीक्षण संस्करण। भविष्य में, परमाणु एटमबिन + उबंटू (सेंटोस?) सर्वर पर डिस्कलेस नेटटॉप में स्थानांतरण होगा?
2. पहले से ही एक पुराने एचपी p1505n प्रिंटर
3. HP Scanjet G2710 स्कैनर का नमूना लिया गया



कार्य शुरू करने से पहले, यह पता लगाना आवश्यक था कि मेरे शहर में सबसे सस्ते स्कैनर क्या उपलब्ध हैं, और क्या वे SANE के लिए समर्थित मॉडल की सूची में हैं
चुनाव 2 स्कैनर, G2710 और BearPaw पर गिर गया। एचपी को इस तथ्य के आधार पर चुना गया था कि BearPaw के तहत आपको ड्राइवरों के साथ एक फ़ाइल अपलोड करने की आवश्यकता है, और हमें सबसे सरल विकल्प की आवश्यकता है। यह ज्ञात नहीं है कि यह फ़ाइल फ़ाइल होस्टिंग पर कब तक संग्रहीत की जाएगी, लेकिन अगर अचानक कुछ होता है, तो "स्पार्कलिंग" समाधान होना बेहतर होता है।

मंचों का अध्ययन करने के बाद, एक समाधान जल्दी मिल गया था। साने + स्कैनबुटोंड का एक गुच्छा आवश्यक हैआधिकारिक स्कैनबुटोंड वेबसाइट पर पुरानी जानकारी के बावजूद, नवीनतम बिल्ड, कम से कम शलजम में, हाल ही में अधिक हैं। दोनों उपयोगिताओं मानक रिपॉजिटरी में हैं। बिना किसी पीपीए के उनका इस्तेमाल किया।

उपयोगिता संस्करण:


साने के माध्यम से, स्कैनर ने बिना किसी नाच के एक नखरे के साथ काम किया। लेकिन सवाल उठता है - बोर्ड पर 3 बटन का उपयोग कैसे करें? यह वह जगह है जहां स्कैनबुटोंड हमारी मदद करेंगे। हमने उपयोगिता रखी। कॉन्फ़िगरेशन संपादित करें। डिफ़ॉल्ट ऑबंट में, यह /etc/scanbuttond/initscanner.sh.example में स्थित है। उदाहरण को काम के संस्करण में कॉपी करें (मैं vi का उपयोग करता हूं, इसलिए इसे कॉपी करें और ध्यान से पेस्ट करें, vi को अपने संपादक के नाम में बदलना न भूलें):
cp /etc/scanbuttond/initscanner.sh{.example,} && vi /etc/scanbuttond/initscanner.sh 
और पंक्ति के अंत में लिखें
 scanimage -L 

हम बचाते हैं।
हम स्कैनर कनेक्ट करते हैं, साने-फाइंड-स्कैनर करते हैं। यदि सबकुछ ठीक है, तो टर्मिनल में -f स्विच के साथ स्कैनबुटोंड चलाएं और स्कैनर पर बटन दबाएं (स्कैनिंगबुटोंड -f शुरू होने के बाद, ~ 7 सेकंड बीतने से पहले ही यह क्लिक करना शुरू कर देता है)।



"एग्जॉस्ट" के द्वारा आप देख सकते हैं कि प्रत्येक बटन का नंबर क्या है। हम उनकी संख्याओं को लिखते या याद करते हैं, जिसके बाद हम कीस्ट्रोक कॉन्फ़िगरेशन कॉन्फिगर करते हैं।
 cp /etc/scanbuttond/buttonpressed.sh{.example,} && vi /etc/scanbuttond/buttonpressed.sh 


डेवलपर ने हमें कई तैयार किए गए उदाहरणों की कोशिश की और हमें हमारी योजना को लागू करने में मदद करेगा।
लाइन 16 पर, हमारे पास हमारे लिए दो चर हैं - TMPFILE और TMPFILE_PDF। उनके लिए, हम उस पथ को लिखते हैं जहां स्कैन किए गए दस्तावेज़ और दस्तावेज़ क्रमशः पीडीएफ में बदल दिए जाते हैं।

उदाहरण के लिए:

 TMPFILE="${SAVEPATH}${DATE1}scan.jpeg" TMPFILE_PDF="${SAVEPATH}${DATE1}scan.pdf" 


चर $ DATE1, $ DATE2 और $ SAVEPATH मेरे ऊपर पंजीकृत हैं और इस तरह दिखते हैं:
 DATE1=$(date +%Y_%m_%d_%H%M%S) DATE2=$(date +%Y_%m_%d_%H:%M:%S) SAVEPATH="/home/panda/Scan/" 

SAVEPATH, बेशक, कुछ भी हो सकता है। खैर, या लगभग किसी को भी। यह fstab के माध्यम से जुड़े नेटवर्क फ़ोल्डर का उपयोग करने की योजना है, इसलिए कोई समस्या नहीं होनी चाहिए।
शेष 2 चर TMPFILE_PS और LOCKFILE को मैंने नहीं छुआ, क्योंकि उनके डिफ़ॉल्ट मान मुझे काफी सूट करते हैं।

अब बटन के अनुकूलन के लिए। यह मेरे लिए ऐसा दिखता है

 case $1 in 1) echo "$DATE2 -- Button 1 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 scanimage --resolution 300 --device-name $2 --mode Color -x 210 -y 297 | pnmtops -width=8.27 -height=11.69 > $TMPFILE_PS ps2pdf $TMPFILE_PS $TMPFILE_PDF echo "$DATE2 -- PDF create done" ;; 2) echo "$DATE2 -- Button 2 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 SCAN_OPTIONS="--resolution 300" scanimage --device-name $2 $SCAN_OPTIONS | pnmtops -width=8.27 -height=11.69 | lpr -J $2 $PRINTER lockfile-remove $LOCKFILE echo "$DATE2 -- Print done" ;; 3) echo "$DATE2 -- Button 3 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 scanimage --resolution 300 --mode Color --format=jpeg -x 210 -y 297 --device-name $2 > $TMPFILE convert $TMPFILE -quality 70 $TMPFILE echo "$DATE2 -- Scan image done" ;; esac 


कोड से यह स्पष्ट है कि पहला बटन परिणामी छवि से एक पीडीएफ बनाता है, दूसरा स्कैन और प्रिंटर को डिफ़ॉल्ट रूप से (फोटोकॉपी) प्रिंट करता है, और तीसरा बस स्कैन करता है।
नोट: यह ध्यान दिया जाना चाहिए कि स्कैन करते समय, मैं इमेजमाजिक पैकेज में शामिल कन्वर्ट उपयोगिता का उपयोग करता हूं। इसके माध्यम से हमें स्वीकार्य इमेज साइज के साथ jpeg मिलता है।

इसके अलावा, मैं इस तरह की घटनाओं की है

 echo -ne '\007' > /dev/null 2>&1 

और
 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 


पहला एक स्पीकर के साथ बीप करता है (जो कि एक्स के बिना सर्वर के लिए महत्वपूर्ण है), और दूसरा एमप्लर के माध्यम से एक ध्वनि अधिसूचना प्रदर्शित करता है (एक्स के साथ मशीनों के लिए प्रासंगिक है, क्योंकि पहला आइटम केवल कुछ कारण से काम करता है {1-6})। यह समझने के लिए किया जाता है कि स्कैनर पर बटन दबाया गया था। क्योंकि बटन अलग-अलग होते हैं, कभी-कभी उन्हें टेढ़े-मेढ़े तरीके से दबाया जाता है और यह स्पष्ट नहीं होता है कि बटन काम करता है या नहीं। यह स्पष्ट है कि यह सब टिप्पणी या स्वाद के लिए छोड़ दिया जा सकता है।

आप /etc/modprobe.d/blacklist.conf फ़ाइल लाइनों में टिप्पणी करके स्क्वीकर को सक्षम कर सकते हैं

 blacklist snd_pcsp 

और
 blacklist pcspkr 


यानी इस तरह दिखना चाहिए:

 #blacklist snd_pcsp 

और
 #blacklist pcspkr 


या बीप पैकेज स्थापित करें और इसे स्क्रिप्ट में कॉल करें।

यह सब चमत्कार ऑटोरन में लिखने के लिए रहता है। फ़ाइल बनाएँ /etc/init.d/scan और इसे लिखें:

 #!/bin/bash killall scanbuttond scanbuttond -f >> /home/panda/Scan/scanlog.log 2>&1 & 


मैंने खुद को लॉगिंग बनाया, जो कुछ इस तरह दिखता है:



आप आउटपुट को दोनों / dev / null और / var / log / जैसा आप चाहें, अनुप्रेषित कर सकते हैं। मेरा व्यवसाय पेश करने के लिए;)

हम निष्पादन अधिकार देते हैं और rc.d में पंजीकरण करते हैं:
 chmod +x /etc/init.d/scan && update-rc.d scan defaults 80 


दरअसल इस सेटअप पर खत्म हो गया है। छवियों को कहां रखना है, लॉगिंग फॉर्मेट, उसके लिए उपलब्धता - यह सब आपकी कल्पना पर निर्भर करता है, क्योंकि किसी भी स्क्रिप्ट को स्कैनबुटोंड में लिखा जा सकता है।

परिणाम:
यह विधि उन जगहों के लिए उपयुक्त है जहां पहले से ही एक प्रिंटर और एक पीसी है जिस पर यह पूरी चीज लटका दी जा सकती है। महंगे एमएफपी नहीं खरीदने के लिए, स्कैनर खरीदना आसान है। यदि आप एक नेटटॉप + प्रिंटर + स्कैनर खरीदते हैं, तो हमारे शहर में कीमतें इस प्रकार हैं:
नेटटॉप ~ 10 000 आर
प्रिंटर ~ 1 550 आर
स्कैनर ~ 3500 आर

कुल ~ 15,000 रूबल (यदि आप स्क्रैच से सब कुछ लेते हैं) बनाम नेटवर्क एमएफपी (नेटवर्क फ़ोल्डर में स्कैन करने के लिए फ़ंक्शन के साथ) के लिए ~ 22,000 रूबल जो हम विभागों में ले गए। खुद के लिए, मैंने बचत के साथ समस्या को हल किया, जैसा कि उन्होंने केवल एक स्कैनर लिया।

आपका ध्यान देने के लिए धन्यवाद।

पुनश्च पूर्ण लिस्टिंग /etc/scanbuttond/buttonpressed.sh सभी अनावश्यक:

 #!/bin/sh DATE1=$(date +%Y_%m_%d_%H%M%S) DATE2=$(date +%Y_%m_%d_%H:%M:%S) SAVEPATH="/home/panda/Scan/" TMPFILE="${SAVEPATH}${DATE1}scan.jpeg" TMPFILE_PDF="${SAVEPATH}${DATE1}scan.pdf" TMPFILE_PS="/tmp/scan.ps" LOCKFILE="/tmp/scan.lock" # Lock file handling and GNOME examples for buttons 2, 3, 4 below contributed # by Lutz Müller <lutz@topfrose.de>. if ! lockfile-create --retry 2 $LOCKFILE; then echo "$DATE1 -- Error: scanning already in progress for $2" exit fi rm -f $TMPFILE rm -f $TMPFILE_PDF rm -f $TMPFILE_PS case $1 in 1) echo "$DATE2 -- Button 1 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 scanimage --resolution 300 --device-name $2 --mode Color -x 210 -y 297 | pnmtops -width=8.27 -height=11.69 > $TMPFILE_PS ps2pdf $TMPFILE_PS $TMPFILE_PDF echo "$DATE2 -- PDF create done" ;; 2) echo "$DATE2 -- Button 2 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 SCAN_OPTIONS="--resolution 300" scanimage --device-name $2 $SCAN_OPTIONS | pnmtops -width=8.27 -height=11.69 | lpr -J $2 $PRINTER lockfile-remove $LOCKFILE echo "$DATE2 -- Print done" ;; 3) echo "$DATE2 -- Button 3 has been pressed on $2" echo -ne '\007' > /dev/null 2>&1 mplayer /usr/share/sounds/KDE-K3B-Insert-Medium.ogg > /dev/null 2>&1 scanimage --resolution 300 --mode Color --format=jpeg -x 210 -y 297 --device-name $2 > $TMPFILE convert $TMPFILE -quality 70 $TMPFILE echo "$DATE2 -- Scan image done" ;; esac lockfile-remove $LOCKFILE 

Source: https://habr.com/ru/post/In161579/


All Articles