Impressora Argox e caracteres com acento

1 resposta
S

Bo tarde,

Tenho uma aplicação aonde o usuário cadastra o código a ser impressora na impressora .
Acontece que o código a ser impresso existem caracteres com acento como ‘á’, ‘é’, ‘ã’ e também o caractere de ‘ç’.

Hoje eu salvo o conteúdo num arquivo TX e mando pra impressora da seguinte forma:

try {
            arqImp = new File ("arquivo.txt");
            SimpleDoc sd = new SimpleDoc(new FileInputStream(arqImp), DocFlavor.INPUT_STREAM.AUTOSENSE, null);
            PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
            aset.add(new Copies(1));
            if (impressora != null) {;
                impressora.createPrintJob().print(sd, aset);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

Deste jeito os caracteres de acentuação não são reconhecidos, viram ‘?’ na impressão.

Li em alguns lugares pra imprimir ASCII. Tentei salvar em ACSII no arquivo TXT, porém a impressão continua errada.
Li também para imprimir direto na porta, mas pra isso eu precisaria saber a porta, sendo que a impressora eu busco por:

PrinterJob.lookupPrintServices()

Existe alguma forma de eu conseguir descobrir em qual porta impressora esta?
Ou então alguma outra forma de mandar ASCII pra impressora?

1 Resposta

S

Alterei minha rotina pra não ler de arquivo e sim mandar uma String, faço a conversão dos caracters para ASCII,porém alguns casos ainda não consigo, por exemplo o Ç e a letra 'é'.
Alguém tem alguma ideia???

Meu código:

Rotina que converte meus caracteres com acento (essa é aparte que ainda não funciona direito:
private static void converteCaracter(String linha, JTextArea jTextArea2) throws IOException {
        jTextArea2.setText(null);

//Ç 	128    ×       158   +       188     +       218    °       248
//ü 	129    ?       159   ¢       189     _       219    ¨       249
//é 	130    á       160   ¥       190     _       220    ·       250
//â 	131    í       161   +       191     ¦       221    ¹       251
//ä 	132    ó       162   +       192     Ì       222    ³       252
//à 	133    ú       163   -       193     _       223    ²       253
//å 	134    ñ       164   -       194     Ó       224    _       254
//ç 	135    Ñ       165   +       195     ß       225            255
//ê 	136    ª       166   -       196     Ô       226
//ë 	137    º       167   +       197     Ò       227
//è 	138    ¿       168   ã       198     õ       228
//ï 	139    ®       169   Ã       199     Õ       229
//î 	140    ¬       170   +       200     µ       230
//ì 	141    ½       171   +       201     Þ       231
//Ä 	142    ¼       172   -       202     Þ       232
//Å 	143    ¡       173   -       203     Ú       233
//É 	144    «       174   ¦       204     Û       234
//æ       145    »       175   -       205     Ù       235
//Æ       146    _       176   +       206     ý       236
//ô       147    _       177   ¤       207     Ý       237
//ö       148    _       178   ð       208     ¯       238
//ò       149    ¦       179   Ð       209     ´       239
//û       150    ¦       180   Ê       210     ­       240
//ù       151    Á       181   Ë       211     ±       241
//ÿ       152    Â       182   È       212     _       242
//Ö       153    À       183   i       213     ¾       243
//Ü       154    ©       184   Í       214     ¶       244
//ø       155    ¦       185   Î       215     §       245
//£       156    ¦       186   Ï       216     ÷       246
//Ø       157    +       187   +       217     ¸       247}


        for (Character c : linha.toCharArray()) {
            switch (c) {
                case 'á':
                    c = 160;
                    break;
                case 'à':
                    c = 133;
                    break;
                case 'â':
                    c = 131;
                    break;
                case 'ã':
                    c = 134;
                    break;
                case 'é':
                    c = 130;
                    break;
                case 'è':
                    c = 138;
                    break;
                case 'ê':
                    c = 136;
                    break;
                case 'í':
                    c = 161;
                    break;
                case 'ì':
                    c = 141;
                    break;
                case 'î':
                    c = 140;
                    break;
                case 'ó':
                    c = 162;
                    break;
                case 'ò':
                    c = 149;
                    break;
                case 'õ':
                    c = 235;
                    break;
                case 'ô':
                    c = 147;
                    break;
                case 'ú':
                    c = 163;
                    break;
                case 'ù':
                    c = 151;
                    break;
                case 'û':
                    c = 150;
                    break;
                case 'Ã':
                    c = 199;
                    break;
                case 'À':
                    c = 183;
                    break;
                case 'Á':
                    c = 181;
                    break;
                case 'Â':
                    c = 182;
                    break;
                case 'É':
                    c = 144;
                    break;
                case 'È':
                    c = 212;
                    break;
                case 'Ê':
                    c = 210;
                    break;
                case 'Í':
                    c = 214;
                    break;
                case 'Ì':
                    c = 222;
                    break;
                case 'Î':
                    c = 215;
                    break;
                case 'Ó':
                    c = 224;
                    break;
                case 'Ò':
                    c = 227;
                    break;
                case 'Õ':
                    c = 229;
                    break;
                case 'Ô':
                    c = 226;
                    break;
                case 'Ú':
                    c = 233;
                    break;
                case 'Ù':
                    c = 234;
                    break;
                case 'Û':
                    c = 235;
                    break;
                case 'ç':
                    c = 135;
                    break;
                case 'Ç':
                    c = 128;
                    break;
                case 'º':
                    c = 167;
                    break;
            }
            jTextArea2.setText(jTextArea2.getText() + c);
        }
    }
Rotina que procura a impressora e imprime o texto direto nela:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
 
                //l printer   
                PrintService printService = PrintServiceLookup.lookupDefaultPrintService();

                converteCaracter(jTextArea1.getText(), jTextArea2);

                //create a print job   
                DocPrintJob job = printService.createPrintJob();

                //define the format of print document   
                InputStream is = new ByteArrayInputStream(jTextArea2.getText().getBytes());
                DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

                //print the data   
                Doc doc = new SimpleDoc(is, flavor, null);
                job.print(doc, null);
                is.close();

        } catch (Exception e) {
            e.printStackTrace();

        }

    }
Criado 18 de julho de 2012
Ultima resposta 13 de ago. de 2012
Respostas 1
Participantes 1