Existe-t-il un moyen Java d'imprimer sur une imprimante IPP spécifique? Tous les exemples de code et des tutoriels que j'ai trouvé l'accent sur la façon d'imprimer un type particulier de document, en utilisant quelque chose comme ce qui suit:Impression vers une imprimante spécifique (IPP URI) en Java
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ée qui est capable d'imprimer la document. Dans mon cas, je veux rechercher une imprimante par son URI, mais PrintServiceLookup
ne semble pas supporter cela. J'ai essayé d'utiliser un PrintServiceAttributeSet
, au lieu de PrintRequestAttributeSet
, et en ajoutant un attribut PrinterURI
, mais cela ne renvoie aucune imprimante. Je suspecte que le service de recherche recherche une imprimante qui peut changer son URI de destination, plutôt que recherchant l'imprimante avec cet URI. En dernier recours, je pensais à l'énumération de tous les PrintService
retournés par lookupPrintServices
, mais l'URI ne figure dans aucun des attributs. Le nom de l'imprimante est là, mais j'ai besoin de l'URI. Pour l'arrière-plan, ma webapp doit imprimer un code à barres sur une imprimante spécifique, en fonction de l'utilisateur actuel. Chaque utilisateur est associé à une URI d'imprimante qui pointe vers 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 à correspondre à l'URI ou à une sous-chaîne de l'URI.
Editer: Pour clarifier un peu, je n'ai pas besoin de rendre les données, j'ai juste besoin de copier un blob sur une imprimante donnée. La partie que je ne peux pas comprendre est comment identifier une imprimante par son URI IPP.
Le lien semble être mort, mais il semble que le code d'origine soit disponible sur code.google.com, bien que sous un nom différent (jspi): http://code.google.com/p/jspi/ (Only svn caisse, pas de téléchargements) –
@DR Merci pour le lien, j'ai mis à jour la réponse avec les informations. –
Comment avez-vous trouvé le PRINTER_NAME à virer à la fin de l'URL? – rancidfishbreath