Impressora Argox e caracteres com acento

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?

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:

[code]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);
    }
}[/code]

Rotina que procura a impressora e imprime o texto direto nela:

[code] 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();

    }

} [/code]