Imprimer vers une imprimante spécifique (IPP URI) en Java

Est-il possible en Java pour l'impression à une imprimante IPP? Tous les exemples de code et des tutoriels que j'ai trouvé à se concentrer sur la façon d'imprimer un type particulier de document, en utilisant quelque chose comme ce qui suit:

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) { 
    }
}

Cet extrait imprime simplement à la première imprimante trouvé qui est capable d'imprimer le document. Dans mon cas, je veux à la recherche d'une imprimante par son URI, mais PrintServiceLookup ne semble pas en charge cette fonction. J'ai essayé d'utiliser un PrintServiceAttributeSetau lieu de PrintRequestAttributeSetet l'ajout d'un PrinterURI attribut, mais qui ne retourne pas de toutes les imprimantes. Je soupçonne que le service de recherche est à la recherche d'une imprimante qui peut changer sa destination URI, plutôt que la recherche de l'imprimante avec d'URI.

En dernier recours, je pensais juste l'énumération de tous les PrintServices retourné par lookupPrintServicesmais l'URI n'est pas dans l'un des attributs. Le nom de l'imprimante est là, mais j'ai besoin de l'URI.

Pour le fond, ma webapp besoin d'imprimer un code à barres sur une imprimante spécifique, basée sur l'utilisateur actuel. Chaque utilisateur est associé à une imprimante URI, qui pointe à une imprimante sur un serveur CUPS. L'URI de l'imprimante est la seule information que j'ai, et je ne peux pas contraindre le nom de l'imprimante pour correspondre à l'URI ou une sous-chaîne de l'URI.

Edit: De clarifier un peu, je n'ai pas besoin de rendre les données, j'ai juste besoin de copier une goutte pour une imprimante donnée. La partie que je ne peux pas savoir comment identifier une imprimante par son IPP URI.

source d'informationauteur Jason Day