java जावा से कप फिल्टर का डेटा पास करें



linux bash (1)

आप cups4j का उपयोग कर सकते हैं

Map attributes = new HashMap();
attributes.put("job-attributes", "print-quality:enum:3#media:keyword:iso_a5_148x210mm");
printJob.setAttributes(attributes);

लिनक्स पर सीयूपीएस अपग्रेड कैसे करें जावा लाइब्रेरी और सीयूपीएस पुस्तकालयों का निम्नलिखित लेख देखें: http://www.cups.org/articles.php?L433+TFAQ+Q

अब, जब से आप प्रिंट कर सकते हैं मैं इसे एक मुद्दा नहीं मानता। लेकिन मुझे यकीन नहीं है कि MyAttrSet क्या है, यह HashPrintRequestAttributeSet होना चाहिए।

प्रयत्न:

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(2));

देखें कि क्या इस विशेषता को पढ़ा है, तो इस तरह के एक सेट को जोड़ने का प्रयास करें, यह काम करता है या नहीं। आप अन्य गुणों को लागू करने की कोशिश कर सकते हैं:

पक्ष विशेषता इस प्रकार दिखती है:

public class Sides
  extends EnumSyntax
  implements DocAttribute, PrintRequestAttribute, PrintJobAttribute
  {
  public final Object getCategory()
    {
    return Sides.class;
    }
  ...
  }

इसी तरह प्रतियां:

public final class Copies
extends IntegerSyntax
implements PrintRequestAttribute, PrintJobAttribute

शायद PrintJobAttribute के अतिरिक्त औजार को जोड़ने का प्रयास करें

मैं मुद्रण प्रणाली पर काम कर रहा हूं, और प्रत्येक मुद्रित दस्तावेज़ (जैसे लेखक, दस्तावेज़ हैश, कुछ सिसर्स और अन्य) को मनमाना पाठ जोड़ने की आवश्यकता है। हम जावा प्रिंटिंग सर्विस (javax.print) को प्रिंटिंग क्लाइंट और कप के रूप में सर्वर के रूप में उपयोग करते हैं।

कप में "फिल्टर" नामक दस्तावेज़ पोस्टप्रोसेसिंग की कुछ प्रक्रियाएं हैं

फ़िल्टर - एक कार्यक्रम है, जिसे कप द्वारा लॉन्च किया जाएगा। कप कुछ पैरामीटर फ़िल्टर कर देते हैं - उनके बीच "नौकरी गुण"

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

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

मैं "एट्रिब्यूटस" तक सीमित नहीं हूं, मुझे जावा से कप फिल्टर के लिए आर्बिटरी डेटा पास करना होगा । मैं यह कैसे कर सकता हूं?

मेरा जावा कोड ऐसा है:

MyAttrSet attrs = new MyAttrSet();
attrs.add(new MyAttr(42));
attrs.add(new Copies(18));  

PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(is, flavor, null);
DocPrintJob job = service.createPrintJob();

job.print(doc, attrs);

फ़िल्टर एक सरल बाश स्क्रिप्ट है, जो उसको हर चीज को प्रिंट करता है:

#!/bin/bash
echo "All args:" > /tmp/f1.log
for var in "[email protected]"
do
        echo "$var, " >> /tmp/f1.log
done

/tmp/f1.log दिखता है:

All args:
87, 
oroboros, 
 Java Printing, 
18, <- number of pages is passed! But not MyAttr
some useless crap like job uuid and else...

MyAttr:

class MyAttr extends IntegerSyntax implements PrintRequestAttribute {

    protected MyAttr(int value) {
        super(value);
    }

    public Class<? extends Attribute> getCategory() {
        // TODO Auto-generated method stub
        return MyAttr.class;
    }

    public String getName() {
        // TODO Auto-generated method stub
        return "somemycustop5";
    }

}




cups