IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

[javax.print] Voir si une imprimante possède job


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut [javax.print] Voir si une imprimante possède job
    Bonjour

    J'ai une application JAVA qui imprime des fichiers. Pour cela j'utilise les classes de javax.print.

    Je voudrais savoir si il est possible de vérifier, si une imprimante possède un Job en exécution qui est été envoyé par un certain user.
    Si oui, comment?

    merci

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Voilà

    Je vais modifier ma question car la fonction de mon appli a changé.

    Avec mon application Java je veux imprimer un fichier. Jusque là ok, ça marche. Pour cela, j'utilise le package javax.print...

    Afin de vérifier si un fichier a été correctement imprimé, j'ai développé un Listener. Voilà le source code, c'est plus facile à comprendre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    PrintJobManagment(DocPrintJob job) {
            job.addPrintJobListener(new PrintJobAdapter() {
     
            	public void printDataTransferCompleted(PrintJobEvent pje) {
    System.out.println("-> " + PrintStatus.DATA_TRANSFERT_COMPLETED);
                }
     
            	public void printJobCanceled(PrintJobEvent pje) {
    System.out.println("-> " + PrintStatus.CANCELED);
            		setStatus(PrintStatus.CANCELED);
                }
                public void printJobCompleted(PrintJobEvent pje) {
                	// The print job was completed
    System.out.println("-> " + PrintStatus.COMPLETED);
                	setStatus(PrintStatus.COMPLETED);
                }
                public void printJobFailed(PrintJobEvent pje) {
                	// The print job has failed
    System.out.println("-> " + PrintStatus.FAILED);
                	setStatus(PrintStatus.FAILED);
                }
                public void printJobNoMoreEvents(PrintJobEvent pje) {
                	// No more events will be delivered from this
                    // 	print service for this print job.
                    // This event is fired in cases where the print service
                    // 	is not able to determine when the job completes.
    System.out.println("-> " + PrintStatus.NO_MORE_EVENTS);            	
                	setStatus(PrintStatus.NO_MORE_EVENTS);
                }
     
                public void printJobRequiresAttention(PrintJobEvent pje) {
                    // The print service requires some attention to repair
                    // 	some problem. 
                	// Example: running out of paper would cause this event 
                	//	to be fired.
    System.out.println("-> " + PrintStatus.REQUIRES_ATTENTION);
                	setStatus(PrintStatus.REQUIRES_ATTENTION);
                }
     
                void setStatus(int iStatus) {
                	synchronized (PrintJobManagment.this) {
                		iResult = iStatus;
    System.out.println("IRESULT: " + iStatus);
                		PrintJobManagment.this.notify();
                	}
                }
     
            });
    	}
     
    	public synchronized int waitForDone() {
            try {
            	while (iResult==0 || iResult == 1 || iResult == 5) {
                    wait();
                }
            } catch (InterruptedException e) {
            } 
            return iResult;
        }

    Voici la description du problème:

    Je suis en train d'effectuer des tests de façon à vérifier les cas où un fichier n'est pas imprimé, par exemple par manque de papier.

    Le problème est que le Listener entre toujours dans la fonction "printJobNoMoreEvents". Ceci arrive si le service d'impression est incapable de voir l'état d'un job d'impression.

    J'ai l'imprimante correctement installée sur mon pc. Elle est branchée et ne possède pas de papier. C'est pour cela que je m'attendais à ce que la méthode "printJobRequiresAttention" soit exécutée à la place de "printJobNoMoreEvents".

    Savez vous me dire ce qu'il se passe?

    Comment puis-je effectuer un test de ce genre?

    Citation Envoyé par pjmorce Voir le message
    Bonjour

    J'ai une application JAVA qui imprime des fichiers. Pour cela j'utilise les classes de javax.print.

    Je voudrais savoir si il est possible de vérifier, si une imprimante possède un Job en exécution qui est été envoyé par un certain user.
    Si oui, comment?

    merci

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Juste une note pour t'indiquer que, malheuresement, j'ai rarement vu par le passe des reponses apportees sur des questions quant a l'usage des print services. Moi-meme je ne connais que les exemples indiques ici, sans les avoir mis en pratiquer plus en avant. Et ils ne semblent pas couvrir pas ce que tu recherches. Sommes toutes, il semble que les services soit assez peu utilises par les programmeurs java.

    Si jamais tu trouves solution a ton probleme, n'hesite pas a la poster ici pour aider autrui et n'hesite pas non-plus a proposer que cela soit inclus dans la FAQ java.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Par défaut
    Bon, pourquoi l'api Java Print API ne detecte pas tous les changements de statuts d'un job d'impression je n'est pas encore découvert.

    J'ai trouvé une autre manière de façon à au moins déterminer si un certain fichier est encore dans la file d'impression de l'imprimante.

    On peut utiliser la classe Windows Win32_PrintJob.

    Avec Visual Basic, par exemple, on peut facilement accéder à cette classe comme si d'une table il s'agissait (en faisant un SELECT * FROM Win32_PrintJob).
    Cette classe possède plusieurs attributs/colonnes:
    - Caption
    - DataType
    - Description
    - Document
    - ...
    - Status
    - StatusMask
    - ...

    Document correspond à notre nom de fichier imprimé.
    Status est le statut actuel de l'impression.
    StatusMask aussi mais en mode numérique.

    J'ai découvert un projet open source qui permet d'y accéder.
    Il s'appele J-INTEROP: www.j-interop.org

    J'ai déjà réussi à obtenir les informations existantes dans la file de l'imprimante sous format String. Après il faut que je décortique les infos si par exemple je veux savoir le statut d'un certain job.
    Je n'ai pas trouvé de moyen pour faire directement un SELECT comme il est possible de le faire en Visual Basic.

    Mais bon c'est déjà cela.

    Je vais essayer de creuser pour voir si je réussi à améliorer ceci...

    Si entretemps quelqun à plus d'infos sur ce thème, avec ou sans j-interop, etc... qu'il n'hésite pas!

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Par défaut
    Exactement le même problème avec la même librairie, pour l'instant non résolu.
    Je pensais qu'en Java il y avait déjà tout ce qu'il fallait !

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Par défaut
    Bonjour,

    pour une application, je dois imprimer un code barre. j'ai une lib qui permet d'écrire tout ce dont j'ai besoin dans un PDF, je voudrais maintenant imprimer ce PDF.

    Est-ce que quelqu'un peu m'aider pour ceci et, si pjmorce a trouvé un moyen de vérifier le statut, je suis méga preneur ;-)

    merci

Discussions similaires

  1. javax.print et status des imprimantes
    Par larissa1 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 13/11/2014, 10h16
  2. Réponses: 0
    Dernier message: 28/07/2014, 11h54
  3. Print Job et statut d'une imprimante.
    Par ricky78 dans le forum MFC
    Réponses: 3
    Dernier message: 29/05/2008, 08h47
  4. Comment peut on avoir le Canvas d'une imprimante + liste des jobs
    Par YURI2006 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 19/04/2006, 11h11
  5. [VB6] [Impression] Savoir si une imprimante est installée
    Par Norm59ttp dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 19/12/2002, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo