वर्चुअल प्रिंटर के रूप में शेल स्क्रिप्ट का उपयोग करना


10

मेरे पास एक शेल स्क्रिप्ट है जो एक पीडीएफ फाइल को एक तर्क के रूप में लेती है और इसे अतिरिक्त प्रिंटर विशिष्ट विकल्पों के साथ प्रिंट करती है। मैं इस स्क्रिप्ट को वर्चुअल प्रिंटर के रूप में कैसे जोड़ सकता हूं जिसे GUI से चुना जा सकता है?

शेल स्क्रिप्ट एक मैनुअल डुप्लेक्स स्क्रिप्ट है जो एक पीडीएफ फाइल लेती है, यहां तक ​​कि पृष्ठों को प्रिंट करती है, उपयोगकर्ता को पेज फ्लिप करने के लिए जिनेटी का उपयोग करते हुए एक उपयोगकर्ता संकेत देता है और फिर विषम पृष्ठों को प्रिंट करता है।

मेरा वर्तमान वर्कफ़्लो है:

  1. फ़ाइल -> प्रिंट -> फ़ाइल में सहेजें -> tmp.pdf
  2. my_duplex_script tmp.pdf
  3. rm tmp.pdf

क्या इसे बनाने का कोई तरीका है:

  1. फ़ाइल -> प्रिंट -> my_script_as_virtual_printer

नोट: यह लिनक्स मिंट 13 दालचीनी पर है। मैंने कोशिश की है, gnome-manual-duplexलेकिन यह मेरे लिए काम नहीं करता है।


GUI संवाद जिसमें से मैं एक पीडीएफ फाइल को प्रिंट कर सकता हूं मानक GTK प्रिंट संवाद

my_duplex_script

#!/bin/bash

lp_args=
while getopts o: opt
do
    case "$opt" in
        o)  lp_args="$lp_args -o $OPTARG" ;;
        \?) echo >&2 Invalid argument; exit 1 ;;
    esac
done
shift `expr $OPTIND - 1`

file=$1
page_count=$(pdfinfo "$file" | grep Pages | awk '{print $2}')
is_odd=`expr $page_count % 2`

if [ $is_odd -eq 1 ]
then
    #outputting blank
    echo | lp -s -t "$file"-blank
fi

#printing even reversed
lp -s -o page-set=even -o outputorder=reverse $lp_args -t "$file"-even "$file"

if zenity --question --text="Flip and reinsert the entire stack when printing has finished." --ok-label="Proceed" --cancel-label="Cancel"
then
    #printing odd reversed
    lp -s -o page-set=odd -o outputorder=reverse $lp_args -t "$file"-odd "$file"
else
    echo >&2 User abort
    exit 1
fi

exit 0

जवाबों:


2

मैंने कभी यह कोशिश नहीं की है, लेकिन एक उपकरण है जिसे कहा जाता है tea4cupsकि आप अपनी स्क्रिप्ट पर एक प्रीहुक लागू कर सकते हैं जो मुद्रण करेगा। फिर आप इस प्रिंट को रद्द कर सकते हैं और वास्तव में कप के माध्यम से एक वास्तविक प्रिंटर पर नहीं जा सकते हैं, जिससे आपकी स्क्रिप्ट को मुद्रण करने की अनुमति मिलती है।

अंश

संभावनाएं अनंत हैं :

  • एक ही काम को एक ही समय में कई प्रिंटर पर भेजें, जो सीयूपीएस के साथ संभव नहीं है।
  • सभी प्रिंट नौकरियों के पीडीएफ संग्रह को स्वचालित करें।
  • निषिद्ध प्रिंट कार्य (नमूना विन्यास फ़ाइल में एक सरल उदाहरण दिखाया गया है)
  • 15 मिनट में एक प्रिंट अकाउंटिंग सॉल्यूशन बनाएं (हाँ, यह सच है)
  • आदि...

Tea4cups निम्नलिखित सुविधा प्रदान करती है:

Tea4CUPS कमांड लॉन्च करने के तीन तरीके प्रदान करता है:

  • फ़िल्टर: एक फ़िल्टर इनपुट प्रोटोकॉल को संशोधित कर सकता है इससे पहले कि वे प्रिंटर पर भेजे जाएं या नीचे परिभाषित पूर्व और पोस्ट हुक के लिए उपलब्ध कराए जाएं। वर्तमान में प्रति प्रिंट कतार में एक फिल्टर को परिभाषित किया जा सकता है।
  • prehooks: इन्हें प्रिंट कार्य से पहले असली प्रिंटर पर भेजे जाने की गारंटी दी जाती है। कोई भी पूर्वाग्रह जो -1 से बाहर निकलता है, वह प्रिंट कार्य को रद्द कर सकता है। किसी विशेष प्रिंट कतार के लिए किसी भी संख्या को पहले से परिभाषित किया जा सकता है।
  • पोस्टहूक: प्रिंट की नौकरी असली प्रिंटर पर भेजे जाने के बाद इन्हें लॉन्च किए जाने की गारंटी दी जाती है, जब तक कि नौकरी को पहले से रद्द कर दिया गया हो। किसी विशेष प्रिंट कतार के लिए किसी भी संख्या में मरणोपरांत परिभाषित किया जा सकता है।

2

मैं इस स्क्रिप्ट को वर्चुअल प्रिंटर के रूप में कैसे जोड़ सकता हूं जिसे GUI से चुना जा सकता है?

वर्चुअल प्रिंटर विज्ञापन करने के लिए, बस अपना संपादन करें /etc/printcap। यह बहुत आसान नहीं है, क्योंकि PRINTCAP के सिंटैक्स को उपयोग करने की आवश्यकता है।

यह कैसे करना है इसका एक उदाहरण यहाँ दिखाया गया है सांबा के साथ पीडीएफ सेवा :

# /etc/printcap
# PDF Service entry

lp|pdf|PDF Printer:\
        :lp=/dev/null:sh:\
        :sd=/var/spool/lpd/pdf:\
        :af=/var/spool/lpd/pdf/acct:\
        :mx#0:sh:\
        :if=/usr/bin/smbprint:

यहां /usr/bin/smbprintस्क्रिप्ट का उपयोग प्रिंट फिल्टर के रूप में किया जाता है। प्रिंटर ही है /dev/null

शायद आपको इंस्टॉल करने की आवश्यकता होगी cups-bsd, लेकिन अक्सर इसका डिफ़ॉल्ट कॉन्फ़िगरेशन है।


ध्यान दें कि printcapBSD lpr या lprNG के लिए कॉन्फ़िगरेशन फ़ाइल है, CUPS के लिए नहीं जो आजकल वास्तविक मानक है, और मिंट पर मानक है।
गाइल्स का SO- बुराई पर रोक '

इसलिए मैंने cups-bsdपैकेज का उल्लेख किया , जो कि डिफ़ॉल्ट रूप से स्थापित और अच्छी तरह से समर्थित मिंट पर भी उपलब्ध है। cups-bsdझूठ नहीं बोल रहा है! यह केवल एक आवरण है, जो उन अनुप्रयोगों का समर्थन करने के लिए कप के लिए बीएसडी प्रिंटिंग की कार्यक्षमता प्रदान करता है जो मुद्रण के लिए उपयोग lprकरते हैं (अर्थात xDF)।

0

पार्टी के लिए देर हो चुकी है, लेकिन मैं एक ही काम करना चाहता था और मुझे कोई अन्य उपाय नहीं मिला।

मैं यहां लिखूंगा कि मैंने इसे कैसे हल किया, शायद अन्य लोग समाधान को उपयोगी पाएंगे।

  • फ़ाइल को प्रिंट करने के लिए कप के लिए एक फिल्टर बनाया
  • फ़ाइल को प्रिंट करने के लिए एक बैकएंड बनाया
  • एक अच्छा और आसान इंस्टॉलर बनाया।

स्रोत कोड github पर है: https://github.com/dentys03/manual_duplex_linux

यह किसी भी एचपी प्रिंटर पर काम करना चाहिए। आसानी से अन्य प्रिंटर के लिए अनुकूलित, मुझे लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.