Précédent   Forum des professionnels en informatique > Java > Développement Web en Java > Applets
Applets Vos questions sur les Applets
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 18h43   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Impression Zebra depuis une Applet

Bonjour,

Je souhaite mettre en place dans une application l'impression automatique d'étiquettes sur une imprimante thermique Zebra.
J'aimerais utiliser une applet.
J'ai développé l'applet sans trop de problème (il s'uffit d'envoyer un flux directement à l'imprimante ou sur le port) et elle fonctionne plutôt pas mal en local par contre impossible de lancer l'impression depuis la page web.

J'ai auto-signé mon applet, elle se lance correctement.
Après avoir mis des sysout et autres printStackTrace un peu partout, je ne rencontre pas d'erreur lors de l'exécution.
Je vois même le job l'impression apparaitre dans la file d'attente de mon imprimante (sous Windows), mon problème est que celui-ci passe direct en "suppression" et mon impression n'est pas lancée.

Ça ressemble à un problème de sécurité au niveau Windows mais je ne vois pas comment le contourner... Si quelqu'un a une solution pour ça, ça m'aiderait bien.

Le code d'impression ressemble à ça :

Code :
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
 
public boolean printOnPrinter(String printerName) {
		PrintService printer = null;
		System.out.println("Recherche de l'imprimante " + printerName);
		PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
        for (int i = 0; i < services.length ; i++) {
            if (printerName.equals(services[i].getName())) {
            	printer = services[i];
            	System.out.println("Imprimante " + printerName + " trouvée");
            	break;
            }
        }
        if (printer == null) {
        	System.err.println("L'imprimante (" + printerName + ") n'a pas été trouvée");
        	return false;
        }
 
        System.out.println("Création du job d'impression");
        DocPrintJob job = printer.createPrintJob();
        byte[] by = stream.getBytes();
        DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
        Doc doc = new SimpleDoc(by, flavor, null);
        try {
        	System.out.println("Début de l'impression");
			job.print(doc, null);
		} catch (PrintException e) {
			System.err.println("Une erreur s'est produite pendant l'impression");
			e.printStackTrace();
			return false;
		}
        System.out.println("Impression terminée");
        return true;
	}
J'utilise un JNLP généré par une servlet pour lancer mon applet qui ressemble à ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost:8080/myapp" spec="1.5+">
    <information>
        <title>PrintApplet</title>
        <vendor>MonEntrepiuse</vendor>
        <homepage href="http://www.monentreprise.fr"/>
        <description>...</description>
    </information>
    <resources>
        <j2se href="http://java.sun.com/products/autodl/j2se" version="1.5+"/>
        <jar href="lib/printApplet-signee.jar" main="true"/>
        <jar href="lib/libutile-signee.jar"/>
    </resources>
    <applet-desc documentbase="http://localhost:8080/myapp/lib"
        height="30" main-class="main.Main" name="PrintApplet" width="200">
        <param name="gou" value="... objet sérializé et encodé en base64 ..."/>
    </applet-desc>
    <security>
        <all-permissions/>
    </security>
</jnlp>
PozeZeFat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 11h40   #2
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Le problème était au niveau du flux vers l'imprimante qui était corrompu.
PozeZeFat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h11.


 
 
 
 
Partenaires

Hébergement Web