Je crée une interface graphique en swing Java. Je dois utiliser un bouton "Imprimer" qui va directement lancer l'impression du fichier que j'ai défini sans ouvrir la boîte de dialogue Imprimer par défaut. Je dois d'abord vérifier si l'imprimante est connectée à mon ordinateur ou non?Comment détecter si l'imprimante est connectée à votre ordinateur ou non en Java?
Répondre
Peut-être utiliser PrintServiceLookup?
Les implémentations de cette classe fournissent des services de recherche pour les services d'impression (généralement équivalents aux imprimantes) d'un type particulier.
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestHashAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
DocPrintJob pj = pservices[0].createPrintJob();
//....
}
Note: le nombre de PrintService devrait être d'au moins un ssi il existe une imprimante. Potentiellement au moins 2 s'il y a une imprimante réelle, puisque vous pouvez installer des imprimantes logicielles sur votre ordinateur. Voir aussi this thread.
En fonction de la plate-forme et jdk, il peut avoir some bug, mais sinon, la méthode suivante est censé indiquer au moins les imprimantes:
import java.awt.print.*;
import javax.print.*;
import javax.print.attribute.*;
import java.text.*;
import javax.print.attribute.standard.*;
public class ShowPrinters {
public ShowPrinters() {
}
public static void main(String[] args) {
DocFlavor myFormat = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services =PrintServiceLookup.lookupPrintServices(myFormat, aset);
System.out.println("The following printers are available");
for (int i=0;i<services.length;i++) {
System.out.println(" service name: "+services[i].getName());
}
}
}
Dans ce eclipse code source, vous voir l'utilisation de PrinterState pour vérifier si l'imprimante est réellement connectée:
AttributeSet attributes = new HashPrintServiceAttributeSet(
new PrinterName(printerName, Locale.getDefault()));
PrintService[] services = PrintServiceLookup.lookupPrintServices(
DocFlavor.SERVICE_FORMATTED.PRINTABLE,
attributes);
PrintService printService = services[0];
PrintServiceAttributeSet printServiceAttributes = printService.getAttributes();
PrinterState printerState = (PrinterState) printServiceAttributes.get(PrinterState.class);
Vérifiez si printerState n'est pas null. Remarque: cela peut ne pas être toujours suffisant (voir this thread).
Oui, je reçois le nom de l'imprimante ici, mais mon imprimante n'est pas physiquement attaché à mon ordinateur.Comment devrais-je vérifier avant de procéder? –
Je pense que tant que l'imprimante a été "installée" sur la boîte, il devrait être disponible via le ci-dessus code s'il s'agit d'une imprimante locale ou réseau.Je voudrais le tester, mais je ne ai aucune option disponible pour le moment. :-) – cjstehno
@VonC savez-vous pourquoi printerState peut être toujours nulle même imprimante est allumé et effectivement connecté ? – whizzzkey
- 1. oledb non inscrit sur votre ordinateur local
- 2. Comment détecter Web Cam est joint ou non Utilisation de Java
- 3. Détecter si un ordinateur est un serveur de fichiers NetApp? (C++ non géré)
- 4. Comment puis-je détecter si une webcam est connectée au PC?
- 5. Vérifiez si ftp est complet ou non?
- 6. Api pour allumer votre ordinateur
- 7. Comment puis-je détecter si sys.stdout est connecté au terminal ou non?
- 8. Comment détecter si IE est bloqué par JAVA (sécurité)
- 9. Comment pouvez-vous détecter à l'exécution si votre instance sql-server 2005 est une instance 32 ou 64 bits?
- 10. Comment détecter si le port série est utilisé ou non dans .net
- 11. Comment détecter si un moniteur est en mode veille?
- 12. Comment détecter si Vista UAC est activé?
- 13. Détecter l'utilisateur connecté sur un ordinateur utilisant Java
- 14. Détecter si IIS est activé
- 15. si l'utilisateur est déjà connecté ou non?
- 16. détecter si un tableau est indexé ou Associatif
- 17. Symbian - détecter si l'appareil est connecté à Internet
- 18. Oracle 9i: Comment déterminer, à l'aide de métadonnées, si un index est en cluster ou non?
- 19. Détecter si SSL est pris en charge
- 20. détecter si l'appareil est en charge
- 21. Détecter si Tooltip est affiché?
- 22. Est-il possible dans DB2 ou dans une base de données de détecter si la table est verrouillée ou non?
- 23. Vérifiez si une socket est connectée avant d'envoyer des données
- 24. Comment vérifier si un lien est actif ou non?
- 25. En PHP 5.x, comment puis-je détecter si une classe est abstraite ou non au moment de l'exécution?
- 26. Comment détecter que pour les paramètres régionaux en cours si pack MUI d'Office est installé ou non de C#
- 27. Comment vérifier si une méthode python est liée ou non?
- 28. "Un programme non identifié veut accéder à votre ordinateur" dans Vista
- 29. Comment détecter si une page Web distante est disponible
- 30. Est-il possible de détecter si une classe est disponible en Java?
Je voulais juste dire que si cette interface graphique est juste pour votre usage personnel, c'est bien. Mais si vous envisagez de l'utiliser, il est mauvais de décider pour l'utilisateur quelle imprimante utiliser. Pourrait aller à la 36 "traceur Aussi, votre dernière phrase est une déclaration avec un point d'interrogation à la fin.Il n'est pas vraiment une question? – Zwergner
Juste terminé ma réponse pour vérifier si l'imprimante est connectée – VonC