У меня Epson TM-T20, настроенный с кодовой страницей 858. Я сделал тестовую распечатку кодовой страницы, и символы в порядке. Класс Java имеет кодировку UTF-8. Я пытаюсь напечатать текст с такими символами, как é , ç и € , присутствующими в уже названной кодовой странице.
Принтер совместим со следующими типами документов:
Arrays.stream(service.getSupportedDocFlavors()).forEach(f->System.out.println(f.getMediaType()+":"+f.getMimeType()+":"+f.getRepresentationClassName()));
image:image/gif:[B
image:image/gif:java.io.InputStream
image:image/gif:java.net.URL
image:image/jpeg:[B
image:image/jpeg:java.io.InputStream
image:image/jpeg:java.net.URL
image:image/png:[B
image:image/png:java.io.InputStream
image:image/png:java.net.URL
application:application/x-java-jvm-local-objectref:java.awt.print.Pageable
application:application/x-java-jvm-local-objectref:java.awt.print.Printable
application:application/octet-stream:[B
application:application/octet-stream:java.net.URL
application:application/octet-stream:java.io.InputStream
Пока я пытался:
Попытка 1: с InputStream
public static void print(){
InputStream bytes = new ByteArrayInputStream(("Estó ès una pruebà \r\n Hola qu€ tal").getBytes());
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
DocPrintJob pj = service.createPrintJob();
Doc doc = new SimpleDoc(bytes, flavor, null);
pj.print(doc, null);
}
Выход:
Estó ès una pruebà
Hola quÔé¼ tal
Попытка 2: с байтом [], тот же вывод
public static void print(){
byte[] bytes = new String("Estó ès una pruebà \r\n Hola qu€ tal").getBytes(Charset.forName("UTF-8"));
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
DocPrintJob pj = service.createPrintJob();
Doc doc = new SimpleDoc(bytes, flavor, null);
pj.print(doc, null);
}
Есть идеи, что может быть не так?