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

Langage Java Discussion :

Impression ticket posligne (applet) : envoyer commandes ESC


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 23
    Points
    23
    Par défaut Impression ticket posligne (applet) : envoyer commandes ESC
    Bonjour,

    J'aurais besoin d'un petit coup de main pour envoyer des commandes ESC à une imprimante utilisée depuis une interface web, par le biais d'un applet java.

    Avant, l'application que je reprends attaquait le port COM directement, et il s'agit de faire passer les impressions par le spouleur, en définissant pour l'imprimante le pilote "vendor thermal printer".

    Mon souci est que autant le texte passe parfaitement, autant les commandes ESC sont totalement ignorées. Je passe mon texte à imprimer en paramètre à l'applet, puis je le récupère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contenu_ticket = this.getParameter("contenu_ticket");
    Ensuite, je dois le transformer en inputstream pour utiliser SimpleDoc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DocPrintJob job = ps_utilise.createPrintJob();
    try {
    	InputStream in = new ByteArrayInputStream(contenu_ticket.getBytes()); 
    	Doc doc = new SimpleDoc(in, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
    	job.print(doc, pras);
    }
    catch(Exception e) {
    	e.printStackTrace();
    }
    Quelqu'un aurait-il une idée pour palier à ce problème ?
    (Je souhaite éviter autant que possible d'avoir recours à JavaPos, qui pèse 600Ko...)

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Je me permets de relancer un peu le topic, étant donné que la réponse n'existe apparemment encore nulle part (encore une fois, en dehors de JavaPOS).

    Quelqu'un aurait-il déjà eu affaire à ce problème ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    J'ai fini par me rabattre sur le JavaPos, qui gère tout ça comme un grand, et... surprise : quand j'ai cherché des exemples pour le faire fonctionner, j'ai trouvé mon bonheur :

    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
    package isHuge;
     
    import javax.print.PrintService;
    import java.awt.print.PrinterJob;
    import javax.print.DocPrintJob;
    import javax.print.Doc;
    import javax.print.DocFlavor;
    import javax.print.SimpleDoc;
     
    public class OpenCashDrawer {
     
        PrinterJob printerJob;
     
        public OpenCashDrawer() {
            PrintService tsp100 = getPrintService("Star TSP100 Cutter (TSP143)");
            try {
                DocPrintJob job = tsp100.createPrintJob();
                String openDrawerCommand = ((char) 0x1B) + "i";
                byte by[] = openDrawerCommand.getBytes();
                DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
                Doc doc = new SimpleDoc(by, flavor, null);
                job.print(doc, null);
            } catch (Exception e) {
                System.out.println("Whoa bro. The printer is balls. Check it:");
                e.printStackTrace();
            }
        }
     
        private PrintService getPrintService(String serviceName) {
            PrintService[] ps = PrinterJob.lookupPrintServices();
            for (int i = 0; i < ps.length; i++) {
                if (ps[i].getName().indexOf(serviceName) >= 0) {
                    return ps[i];
                }
            }
            System.out.println("Aw SNAP! I like, can't find a printer with "
                    + serviceName + " in the name dude.");
            System.exit(1);
            return null;
        }
     
        public static void main(String[] args) {
            OpenCashDrawer ocd = new OpenCashDrawer();
        }
    }
    (on le retrouve sur cette page : http://www.java-forums.org/java-2d/2...s-printer.html)

    Les fonctions ci-dessus permettent tout simplement de couper le papier... mais indiquent surtout comment passer des commandes directement au port USB !

    J'espère que cela pour servir à d'autres.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Salut,
    Merci d'avoir posté votre code,cela fait un bon moment que je cherche comment envoyer des commandes ESC à mon imprimante pour couper mon ticket de caisse.

    je n'ai pas mon imprimante là pour pouvoir testé,j'utilise un FileOutputStream pour envoyer directement sur le com. pourriez vous me donner des pistes sur l'utilisation de ces méthodes?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Désolé, je n'avais pas vu votre réponse.
    Pour ceux que ça intéresserait toujours, la liste des commandes POS est disponible dans le manuel de chaque imprimante. Après, il ne reste plus qu'à les envoyer à l'imprimante en utilisant les fonctions de l'impression, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DocPrintJob job = tsp100.createPrintJob();
    String openDrawerCommand = ((char) 0x1B) + "i";
    byte by[] = openDrawerCommand.getBytes();
    DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
    Doc doc = new SimpleDoc(by, flavor, null);
    job.print(doc, null);

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 43
    Points
    43
    Par défaut Problème Imprimante thermique
    bonjour,
    J'ai vu que vous aviez travailler sur les imprimantes thermiques, j’espère que vous pouvez m'aider.
    Mon problème consiste à imprimer le contenu d'un textarea en utilisant les imprimantes POS ou thermique.
    Mais j'arrive pas en utilisant votre code !!? il me coupe juste le papier et il ne m'imprime pas.
    Que dois je faire et quel code dois je utiliser ?

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment envoyer commande ESC/POS
    Par danou07200 dans le forum C#
    Réponses: 1
    Dernier message: 07/11/2010, 20h06
  2. Impression des articles et envoyé à
    Par alizea77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/06/2008, 17h43
  3. Impression PDF en ligne de commande
    Par thesmall dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 04/03/2007, 16h04
  4. Réponses: 6
    Dernier message: 17/05/2006, 21h02
  5. [applet ]envoyer fichier via ftp? quelle solution?
    Par chouchou93 dans le forum Applets
    Réponses: 5
    Dernier message: 27/03/2006, 15h35

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