"बाद में इसे प्रिंट करें" सॉफ्टवेयर


12

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

हालाँकि, वास्तविक प्रिंटर कतारें इसके लिए डिज़ाइन नहीं की गई हैं; वे तुरंत दस्तावेज़ को प्रिंट करने का प्रयास करते हैं, और जैसे ही मैं नेटवर्क पर मिलता है, सभी अचानक छपाई शुरू कर देते हैं, जो आम तौर पर वह नहीं है जो मैं करना चाहता हूं। इसके अलावा, कभी-कभी मैं कतार में दस्तावेजों के क्रम को बदलना चाहता हूं, जो बहुत आसान नहीं है, खासकर जब उनमें से कुछ ने मुद्रण शुरू कर दिया है।

इसके अलावा, कभी-कभी मुद्रण विफल हो जाता है क्योंकि जैसे प्रिंटर कागज या टोनर से बाहर निकलता है, और मैं दस्तावेज़ को एक अलग प्रिंटर पर फिर से प्रिंट करना चाहता हूं। यह उदाहरण CUPSया के साथ सीधा नहीं है system-config-printer; मुझे आमतौर पर वापस जाना है, पीडीएफ रीडर को फिर से खोलना है, और फिर से शुरू करना है। पीडीएफ पाठकों में से कोई भी मुझे नहीं पता है कि आप बाद में मुद्रित करने के लिए दस्तावेजों की एक सूची रखते हैं, लेकिन यह पीडीएफ रीडर की एक छिपी विशेषता हो सकती है, जिसके बारे में मुझे नहीं पता है।

वैसे भी, यहाँ मैं क्या करने में सक्षम होना चाहता हूँ:

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

मुझे पता है कि मैं एक शेल स्क्रिप्ट lprऔर एक पाठ फ़ाइल में पथों की एक सूची के साथ कुछ हैक कर सकता हूं , लेकिन मैं यह महसूस करने में मदद नहीं कर सकता कि यह समस्या पहले से अधिक मजबूत और सुरुचिपूर्ण तरीके से हल हो गई है।

बोनस अंक:

  • दस्तावेजों को पीडीएफ रीडर में खोलने की आवश्यकता नहीं है। मैं उन्हें प्रिंट करना चाहता हूं, उन्हें ब्राउज़ नहीं करना चाहता हूं, और कोई कारण नहीं है कि उनके पास एक ही एप्लिकेशन होना चाहिए।
  • एक से अधिक सूची।
  • पोस्टस्क्रिप्ट, DjVu और अन्य पृष्ठ-विवरण प्रारूपों के लिए भी काम करें।
  • फ़ाइल प्रबंधकों से खींचें और छोड़ें।

कोई सुझाव?


); एक इनाम शुरू अगर आप पर्याप्त प्रतिष्ठा है
एबी

जहां तक ​​मैं देख सकता हूं, इसके लिए प्रिंटर कतारों के केवल एक सरल संशोधन की आवश्यकता होगी जो वर्तमान में लागू है cups। आप बस इच्छित प्रिंटर कतार में प्रिंट करेंगे, लेकिन प्रिंटर जॉब्स को "होल्ड" पर रखें, जब तक आप उन्हें "रिलीज़" करने का निर्णय नहीं लेते। "ऑन होल्ड" बटन वह सब है जिसकी आवश्यकता है। या मुझे कुछ याद है?
जोस

@Jos का मेरा संस्करण system-config-printer-appletमुझे प्रिंट नौकरियों को होल्ड करने और जारी करने के साथ-साथ उन्हें अन्य प्रिंटरों में स्थानांतरित करने की अनुमति देता है, लेकिन मैं नौकरी सबमिट करने के बाद प्रिंट नौकरियों के क्रम को नहीं बदल सकता हूं या मुद्रण विकल्प नहीं बदल सकता हूं। इसके अलावा, उस बिंदु से मूल दस्तावेज का रास्ता लंबा हो गया है।
नथानिएल एम। बेवर

@AB दुर्भाग्य से 75 इंटरनेट बिंदुओं की आवश्यकता है, और मैं एक कम 53-पॉइंटर हूं।
नथानिएल एम। बीवर

जवाबों:


10

मैं जो कर रहा हूं वह निम्न है --- यह उतना बहुमुखी नहीं है जितना आपने पूछा है, लेकिन यह लगभग ठीक है। आपको अपने सभी प्रिंटरों को परिभाषित करने की आवश्यकता है, और फिर आपको इन दो लिपियों की आवश्यकता है:

  1. stop_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsdisable "$i"
        echo " " paused.
    done
    
  2. start_printers:

    #!/bin/bash -f
    #
    allp=(`cat /etc/printcap | tr "|" "\t" | cut -f 1 | grep -v "#"`)
    for i in ${allp[@]}; do 
        echo -n Printer $i:
        cupsenable "$i"
        echo " " restarted.
    done
    

आपको उन्हें अपने रास्ते में रखना होगा (उदाहरण के लिए ~/bin) और उन्हें निष्पादन योग्य बनाना होगा chmod +xगुफा : मेरे पास उनके नाम के रिक्त स्थान वाला कोई प्रिंटर नहीं है। उस स्थिति में स्क्रिप्ट का परीक्षण नहीं किया जाता है (लेकिन मुझे यकीन है कि हमारी एक शेल स्क्रिप्ट के गुरु एक फ्लैश में स्क्रिप्ट को ठीक कर देंगे; -) ...)

अब, आप जारी कर सकते हैं:

[romano:~] % stop_printers
Printer PDF:  paused.
Printer ColorDEA:  paused.
Printer Deskjet_6980:  paused.
Printer fotocop5:  paused.

और आप जहां चाहें वहां से प्रिंट कर सकते हैं, प्रिंटर को रोक दिया जाएगा:

अवतार से प्रिंटर

आप अपनी कतार देख सकते हैं:

[romano:~] % lpq -PDeskjet_6980
Deskjet_6980 is not ready
Rank    Owner   Job     File(s)                         Total Size
1st     romano  439     Bones_3+RG.pdf — Flesh depth  125952 bytes

(AFAIK, प्रिंट कतारें रिबूट के पार लगातार हैं)। और जब आप प्रिंट करना चाहते हैं:

[romano:~] % start_printers         
Printer PDF:  restarted.
Printer ColorDEA:  restarted.
Printer Deskjet_6980:  restarted.
Printer fotocop5:  restarted.

का उपयोग करते हुए lprmतुम्हें नौकरी से निकाल सकते हैं अगर आप की जरूरत है; lprकमांड लाइन के माध्यम से एक दस्तावेज़ को संलग्न करना, और यदि आप अलग-अलग "सूचियाँ" चाहते हैं, तो कोई भी एक ही प्रिंटर को कई बार अलग-अलग नामों से परिभाषित करने से मना नहीं करता है।

आप प्रत्येक प्रिंटर को हाथ से फिर से शुरू कर सकते हैं, यह सिर्फ cupsenable <printername>प्रॉम्प्ट से चलने की बात है ।

मुझे नहीं लगता कि आप इस समाधान के साथ क्या कर सकते हैं इस तथ्य के बाद प्रिंट विकल्प बदल रहे हैं --- आपको इसके लिए दस्तावेज़ को फिर से लिखना और फिर से जोड़ना होगा।


2
+1 अच्छा, हालांकि, जब आपके पास आपके कारण हो सकते हैं, तो आपके सरणी को आबादी वाले cutहिस्से में उचित सीमांकक का उपयोग करके सरल बनाया जा सकता है cat /etc/printcap | cut -d "|" -f 1 | grep -v "#":। आप अनुवाद से छुटकारा पाकर अपने आप को कुछ चक्र समय बचा लेते हैं tr। यह काम करता है बशर्ते आपको केवल अपने पहले क्षेत्र की आवश्यकता हो।
Cbhihe

1

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

यह गैर-डुप्लेक्स प्रिंटर पर डुप्लेक्स प्रिंटिंग का अनुकरण करने और अपने स्वयं के सरल प्रिंट कतार प्रबंधन को लागू करने के लिए डिज़ाइन किया गया है। इसमें gui और cli दोनों इंटरफेस हैं।

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

सिस्टम वर्तमान डिफ़ॉल्ट प्रिंटर पर प्रिंट करता है, लेकिन dplx और डुप्लेक्स स्क्रिप्ट अतिरिक्त तर्कों को स्वीकार करते हैं जो एलपी को पारित किए जाते हैं और इसका उपयोग किसी भी विकल्प को सेट करने के लिए किया जा सकता है जो एलपी प्रिंटर और अन्य गुणों को समझता है।

वर्तमान में सिस्टम पीडीएफ, पोस्टस्क्रिप्ट और सादे पाठ फ़ाइलों को संभालता है।

एक चीज जो यह नहीं करेगी वह है प्रिंट फाइलें जो एक्रोडेड के भीतर से प्रिंट टू फाइल विकल्प का उपयोग करके बनाई गई थीं। वे फाइलें सिर्फ lp के साथ काम नहीं करती हैं और मैं कभी भी किसी अपस्ट्रीम लोगों का ध्यान आकर्षित करने में सक्षम नहीं हो पाया हूं कि समस्याएं क्या हैं।

व्यक्तिगत रूप से, मैं लगभग सब कुछ "ऑफ़लाइन" प्रिंट करता हूं (प्रिंट से फाइल विकल्पों का उपयोग करता हूं जो अधिकांश एप्लिकेशन समर्थन करते हैं) तब भी जब मेरा प्रिंटर उपलब्ध है। यह मुझे इस बात पर ध्यान केंद्रित करने में मदद करता है कि मैं क्या कर रहा हूं। बाद में, जब मैं एक उपयुक्त ब्रेक पॉइंट पर पहुंचता हूं, तो मैं नौकरियों के बैचों को प्रिंट करता हूं।

जब आप इसे फिर से तैयार किए बिना किसी चीज़ की दूसरी कॉपी प्रिंट करना चाहते हैं तो प्रिंट कतार में होना वास्तव में बहुत अच्छा है और प्रिंटर की त्रुटियों जैसे जाम से निपटने या टोनर से बाहर निकलने के लिए आवश्यक है।


यह एक दिलचस्प पैकेज है, लेकिन ऐसा लगता है कि इसमें अभी कुछ खुरदरे किनारे हैं, और मुझे यकीन नहीं है कि अगर कुछ गलत हुआ तो मैं इसे ठीक कर पाऊंगा। वैसे, क्या आपने इसे गीथूब पर अपलोड करने पर विचार किया है?
नथानिएल एम। बेवर

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

0

इस समस्या के लिए एक पूर्ण समाधान प्रतीत नहीं होता है, लेकिन यहाँ एक फ़ंक्शन मैंने अपने साथ जोड़ा है .bashrcजो ऊपर दिए गए Rmano के उत्तर के समान है , स्वतः पूर्ण की अतिरिक्त सुविधा के साथ।

all-printers() {
    if [ "$*" = "" ]
    then
        # Print usage."
        printf "Usage:\n"
        printf "all-printers start\n"
        printf "all-printers stop\n"
        return 1
    elif ! [ "$1" = "stop" -o "$1" = "start" ]
    then
        printf "Unrecognized command: $1\n"
        return 1
    fi

    cut -f 1 -d '|' /etc/printcap |
    grep -v '^#' |
    while read printer_name
    do 
        if [ "$1" = "stop" ]
        then
            cupsdisable "$printer_name"
            printf "$printer_name stopped.\n"
        elif [ "$1" = "start" ]
        then
            cupsenable "$printer_name"
            printf "$printer_name started.\n"
        fi
    done
}
complete -W 'stop start' all-printers
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.