Drukuj do określonej drukarki (IPP URI) w Javie

Czy Java może drukować na określonej drukarce IPP? Cały przykładowy kod i samouczki, które znalazłem, skupiają się na tym, jak wydrukować określony typ dokumentu, używając czegoś takiego:

DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
             PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
    DocPrintJob pj = pservices[0].createPrintJob();
    try {
        FileInputStream fis = new FileInputStream("test.ps");
        Doc doc = new SimpleDoc(fis, flavor, null);
        pj.print(doc, aset);
    } catch (FileNotFoundException fe) {
    } catch (PrintException e) { 
    }
}

Ten fragment po prostu drukuje na pierwszej znalezionej drukarce, która jest w stanie wydrukować dokument. W moim przypadku chcę wyszukać drukarkę według jej URI, alePrintServiceLookup nie wydaje się to wspierać. Próbowałem użyć aPrintServiceAttributeSet, zamiastPrintRequestAttributeSeti dodającPrinterURI atrybut, ale nie zwraca żadnych drukarek. Podejrzewam, że usługa wyszukiwania szuka drukarki, która może zmienić docelowy URI, zamiast szukać drukarki z tym URI.

W ostateczności pomyślałem o wyliczeniu wszystkichPrintServicezwrócone przezlookupPrintServices, ale URI nie ma żadnego z atrybutów. Nazwa drukarki jest tam, ale potrzebuję URI.

W tle mój webapp musi wydrukować kod kreskowy na określonej drukarce, w oparciu o aktualnego użytkownika. Każdy użytkownik jest powiązany z identyfikatorem URI drukarki, który wskazuje drukarkę na serwerze CUPS. Identyfikator URI drukarki jest jedyną posiadaną przeze mnie informacją i nie mogę ograniczyć nazwy drukarki do zgodności z URI lub podciągiem URI.

Edytować: Aby trochę wyjaśnić, nie muszę renderować danych, wystarczy skopiować kopię do danej drukarki. Część, której nie rozumiem, to jak zidentyfikować drukarkę za pomocą jej identyfikatora URI IPP.

questionAnswers(2)

yourAnswerToTheQuestion