2012-06-25 14 views
8

से सीयूपीएस के साथ 'पीडीएफ पर प्रिंट करें' पर एक फ़िल्टर/बैकएंड प्रोग्रामिंग ठीक है तो मैं यही करना चाहता हूं। मैं एक प्रिंट विकल्प जोड़ना चाहता हूं जो कि यूट्यूब का दस्तावेज़ किसी भी पीडीएफ पर प्रिंट करता है और कुछ हेडर को किसी डिवाइस पर भेजने से पहले जोड़ता है।किसी भी मैक ओएस एक्स एप्लिकेशन

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

मैंने this printing with CUPS tutorial के माध्यम से काम किया है और लगता है कि सबकुछ ठीक से स्थापित हो रहा है, लेकिन फ़ाइल उचित अस्थायी स्थान में कभी दिखाई नहीं दे रही है। और यदि कोई उपयोगकर्ता-एंड पीडीएफ-प्रिंटर की तलाश में है, तो this cups-pdf-for-mac-os-x इंस्टॉलर के माध्यम से काम करता है, हालांकि जब मैं स्रोत डाउनलोड करता हूं और रीडेमे में निर्देशों का पालन करता हूं तो संकेतक निर्देशिका में दिखाई देने वाली कोई फ़ाइल नहीं होती है। यदि कोई भी टर्मिनल के माध्यम से मैक पर काम करने के लिए इनमें से कोई भी प्राप्त कर सकता है, तो कृपया मुझे चरण-दर-चरण बताएं कि आपने यह कैसे किया।

+0

शायद मैं आपकी ज़रूरत को गलत समझ रहा हूं, लेकिन कोको सीधे दस्तावेजों/एनएसवी व्यू से पीडीएफ उत्पादन का समर्थन करता है, आपको प्रिंट ड्राइवर स्थापित करने की आवश्यकता नहीं है। "पीडीएफ" के लिए प्रलेखन खोजें। – CRD

+0

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

+0

जैसा कि मैंने सोचा था कि मैं हो सकता हूं, मैं आपकी ज़रूरत को गलत समझ रहा था। सीयूपीएस को देखकर आपने जो कुछ करने की कोशिश कर रहे हैं उसे देखने के लिए आपने एक अच्छी जगह ली है। – CRD

उत्तर

5

मैं वास्तव में चाहता हूं कि मैं दो उत्तरों स्वीकार कर सकूं क्योंकि मुझे नहीं लगता कि मै मैक विनिर्देशों के लिए @ कर्ट पेफिफ़ल की मदद के बिना और केवल प्रिंटर ड्राइवरों और फ़ाइलों के स्थानों को समझने के बिना ऐसा कर सकता था। लेकिन यहाँ मैं क्या किया है:


  1. codepoet cups-pdf-for-mac-os-x से स्रोत कोड को डाउनलोड करें। (गैर-मैक्स के लिए, आप http://www.cups-pdf.de/ देख सकते हैं) रीडेम बहुत विस्तृत है और यदि आप सभी निर्देशों को ध्यान से पढ़ते हैं, तो यह काम करेगा, हालांकि मुझे सभी टुकड़ों को पाने में थोड़ा परेशानी थी, इसलिए मैं ठीक से बताऊंगा कि मैंने क्या किया किसी और को कुछ परेशानी बचाने की उम्मीद में। इसके लिए, स्रोत कोड वाली निर्देशिका को "कप-पीडीएफडाउनलोडर" कहा जाता है।

  2. संकलित कप-pdf.c src फ़ोल्डर में निहित के रूप में रीडमी निर्दिष्ट करता है:

    gcc -09 -s -lcups -o cups-pdf cups-pdf.c

    एक चेतावनी हो सकता है: ld: warning: option -s is obsolete and being ignored, लेकिन यह मेरे लिए कोई समस्या नहीं बनी हुयी थी। बाइनरी को/usr/libexec/कप/बैकएंड में कॉपी करें। आपको sudo कमांड की संभावना होगी, जो आपको आपके पासवर्ड के लिए संकेत देगा। उदाहरण के लिए:

    sudo cp /cups-pdfdownloaddir/src/cups-pdf /usr/libexec/cups/backend

    इसके अलावा, मत भूलना इस फ़ाइल पर अनुमतियों को बदलने के लिए - यह रूट अनुमतियों की आवश्यकता (700) जो बैकएंड निर्देशिका में cupd-पीडीएफ जाने के बाद निम्नलिखित के साथ बदला जा सकता है :

    sudo chmod 700 /usr/libexec/cups/backend/cups-pdf

  3. संपादित फ़ाइल /cups-pdfdownloaddir/extra/cups-pdf.conf में निहित। "पीडीएफ रूपांतरण सेटिंग्स" शीर्षलेख के तहत, GhostScript के अंतर्गत एक पंक्ति खोजें जो #GhostScript /usr/bin/gs पढ़ती है। अगर मुझे इसकी ज़रूरत होती तो मैंने इसे असम्बद्ध नहीं किया, लेकिन इसके नीचे लाइन Ghostscript /usr/bin/pstopdf के नीचे जोड़ा गया। (वहाँ इन संशोधनों में से किसी के लिए कोई पूर्व कर्सर # होना चाहिए)

    GSCall के तहत लाइन है कि #GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePage\ s=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite \ -f %s इस uncommenting बिना फिर से पढ़ता खोजें, इस के तहत मैं लाइन GSCall %s %s -o %s %s

    PDFVer कि पढ़ता के तहत लाइन का पता लगाएं जोड़ा #PDFVer 1.4 और इसे PDFVer पर बदलें, कोई स्थान या निम्न वर्ण नहीं।

    अब बचाने के लिए और निम्न आदेश के साथ करने के लिए/etc/कप इस फाइल को कॉपी करने से पहले

    sudo cp cups-pdfdownloaddir/extra/cups-pdf.conf /etc/cups

    किसी पाठ संपादक में संपादन से सावधान रहें क्योंकि यूनिक्स और मैक के वातावरण में नई-पंक्तियों अलग हैं और बाहर निकलने संपादन संभावित रूप से स्क्रिप्ट बर्बाद कर सकते हैं।आप उन्हें हटाने के लिए हमेशा एक perl कमांड का उपयोग कर सकते हैं, लेकिन मैं पागल हूं और इसे पहले स्थान पर सौदा नहीं करना पसंद करता हूं।

  4. अब आप एक प्रोग्राम खोलने में सक्षम होना चाहिए (उदा। वर्ड, एक्सेल, ...) और फ़ाइल >> प्रिंट करें और सीयूपीएस-पीडीएफ नामक एक उपलब्ध प्रिंटर ढूंढें। इस प्रिंटर पर प्रिंट करें, और आपको अपने पीडीएफ को/var/spool/cups-pdf/yourusername/डिफ़ॉल्ट रूप से ढूंढना चाहिए।


* इसके अलावा, मैं क्योंकि यह मुझे मदद की इस उपयोगी हो सकता है सोचा: अगर कुछ इन निर्देशों का पालन में खराब हो जाता है और आप से शुरू करना/हटाने के लिए यह से छुटकारा पाने की जरूरत है, ड्राइवर जिसकी आपको आवश्यकता है (1) /usr/libexec/cups/backend (2) से कप-पीडीएफ बैकएंड को हटाएं /etc/cups/ (3) से कप-पीडीएफ.कॉफ़ को हटाएं सिस्टम प्राथमिकताओं में जाएं >> प्रिंट & फ़ैक्स और सीयूपीएस-पीडीएफ प्रिंटर को हटाएं।


हालांकि यह वहाँ अधिक विवरण, और अनुकूलन पर अन्य जानकारी रीडमी फ़ाइल में निहित हैं कि कैसे मैं सफलतापूर्वक एक पीडीएफ बैकएंड/खुद के लिए फिल्टर की स्थापना की है। मनाइए कि यह किसी और के लिए सहायक हो!

+1

मैंने सोचा था कि अपने अंतिम लक्ष्य * के लिए गया था 'प्रिंट जो उपयोगकर्ता के दस्तावेज़ एक पीडीएफ के लिए है और ** ** एक डिवाइस के लिए इसे बंद कर भेजने से पहले कुछ हेडर जोड़ने ...' *। तो आपने आखिरी हिस्से को कैसे हल किया? (मेरा जवाब केवल पहला भाग कवर - मैं आपके सवाल का क्या दूसरे भाग के लिए विस्तृत आवश्यकताओं थे से पता नहीं था।) –

+0

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

+0

हाय केटी, मुझे यह त्रुटि मिल रही है (sampletopdf) स्थिति 13 के साथ बंद –

10

जाने का रास्ता यह है:

  • आप की तरह किसी भी ड्राइवर के साथ एक प्रिंट कतार सेट करें। लेकिन मैं एक पोस्टस्क्रिप्ट ड्राइवर/पीपीडी का उपयोग करने की सलाह देते हैं। (ए पोस्टस्क्रिप्ट पीपीडी एक है जो किसी भी *cupsFilter: ... लाइन शामिल नहीं करता है।):

  • प्रारंभ में, (शैक्षिक) कप बैकएंड 2dir नामित उपयोग करें। उस वेबसाइट से कॉपी किया जा सकता है: KDE Printing Developer Tools Wikiसुनिश्चित करें कि आपको कॉपी करते समय लाइन अंतराल सही (यूनिक्स-जैसे) मिलता है।

  • कमांडलाइन प्रारंभिक कतार स्थापित करने के लिए:

    lpadmin \ 
        -p pdfqueue \ 
        -v 2dir:/tmp/pdfqueue \ 
        -E \ 
        -P /path/to/postscript-printer.ppd 
    
    2dir बैकएंड अब निर्देशिका /tmp/pdfqueue/ करने के लिए सभी उत्पादन लिखेंगे और यह हर काम के लिए एक uniq नाम का उपयोग करेगा। प्रत्येक परिणाम अब एक पोस्टस्क्रिप्ट फ़ाइल होना चाहिए। (अभी तक आप जो भी संशोधन चाहते हैं उसके साथ)।

  • /etc/cups/ppd/ में इस कतार द्वारा उपयोग किए गए पीपीडी का पता लगाएं (इसका नाम pdfqueue.ppd होना चाहिए)।

  • (पीपीडी के शीर्ष के निकट, सबसे अच्छा) निम्न पंक्ति जोड़ें:

     
    *cupsFilter: "application/pdf 0 -"
    (यकीन है कि लाइन के बहुत शुरुआत में *cupsFilter प्रारंभ होता है।) इस लाइन ऑटो सेटअप करने के लिए cupsd बताता है एक फ़िल्टर श्रृंखला है कि पीडीएफ का उत्पादन और फिर प्रिंटर पर बैकएंड के माध्यम से फ़ाइल भेजने से पहले '-' नामक अंतिम फ़िल्टर को कॉल करें। वह '-' फ़िल्टर एक विशेष है: यह कुछ भी नहीं करता है, यह पासथ्रू फ़िल्टर है।

  • कप अनुसूचक फिर से शुरू:

    sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist 
    sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist

  • अब से अपने pdfqueue हर काम यह करने के लिए मुद्रित /tmp/pdfqueue/*.pdf में पीडीएफ रूप अंत का कारण होगा।

  • 2dir बैकएंड स्क्रिप्ट का अध्ययन करें। यह सरल बैश है, और उचित रूप से अच्छी तरह से टिप्पणी की।

  • एक तरीका है कि /tmp/pdfqueue/*.pdf में परिणाम पर सहेजने से पहले अपने पीडीएफ करने के लिए अपने वांछित संशोधनों कहते हैं में 2dir संशोधित करें ...


अद्यतन: ऐसा लगता है कि मैं में 2 उद्धरण भूल गया मेरे मूल रूप से निर्धारित *cupsFilter: ... लाइन ऊपर। माफ़ कीजिये!

+0

यह वही लगता है जो मुझे चाहिए! यह सब लिखने के लिए समय निकालने के लिए धन्यवाद। हालांकि, कृपया मेरे साथ सहन करें क्योंकि सीयूपीएस और प्रिंटर शर्तों के साथ मेरी अपरिचितता मुझे मिनट-दर-चरण प्रश्न पूछती है जिसे आपने पहले ही उत्तर दिया होगा। केडीई प्रिंटिंग डेवलपर टूल्स का लिंक विकी निर्दिष्ट करता है कि 2 डीआईआर/usr/lib/cups/backend/में सहेजा जाना चाहिए, हालांकि मुझे लगता है कि/usr/lib/में एक कप निर्देशिका नहीं है। क्या मुझे कुछ याद आया है? इसके अलावा, प्रारंभिक कतार स्थापित करने के लिए अंतिम ध्वज, मुझे लगता है कि मुझे पथ को प्रतिस्थापित करना है, लेकिन वास्तव में क्या? – Katie

+1

@ केटी: क्षमा करें, मेरे पास उस पथ के साथ लिनक्स था। मैक ओएस एक्स पर आपको '/ usr/libex/cups/backend /' का उपयोग करना होगा। अंतिम '-P' ध्वजांकित पथ तर्क जिसे आप'/user/katie/postscript-printer.ppd' के साथ प्रतिस्थापित कर सकते हैं ... लेकिन निश्चित रूप से आपको उस नाम के साथ एक वास्तविक पोस्टस्क्रिप्ट प्रिंटर पीपीडी डालना चाहिए। –

+0

ठीक है, मुझे यह सॉर्ट आउट मिला - पीडीएफक्यू एक प्रिंटर विकल्प है। मेरा मानना ​​है कि मैंने अन्य निर्देशों का पालन किया, हालांकि जब मैं प्रिंट करने की कोशिश करता हूं, तो मुझे एक संवाद मिलता है जो कहता है "यह प्रिंटर रोक दिया गया है। क्या आप इसे प्रिंटिंग फिर से शुरू करना चाहते हैं?" रद्द करने के विकल्प के साथ, कतार में जोड़ें, या फिर से शुरू करें। या तो कतार में जोड़ें या फिर से शुरू करें प्रिंट नौकरी जोड़ता है ताकि मैं इसे पीडीएफक्यू प्रिंटर जीयूआई में देख सकूं जो पॉप अप हो गया है, लेकिन फिर से शुरू करने का जवाब नहीं लगता है और बस वहां बैठता है।/tmp/pdfqueue मौजूद प्रतीत नहीं होता है, इसलिए मुझे पूरा यकीन नहीं है कि यह फ़ाइल कहां जा रही है। कोई सुझाव? – Katie