2013-05-16 13 views
5

Korzystam z interfejsu Java Print Service API do drukowania na drukarce pokwitowań. Drukuje dobrze, ale nie kończy automatycznie po zakończeniu. Jak poinformować drukarkę o automatycznym cięciu?Java: Automatyczne przycinanie drukarki pokwitowań

Oto kod używam do druku:

 String defaultPrinter = 
        PrintServiceLookup.lookupDefaultPrintService().getName(); 
       System.out.println("Default printer: " + defaultPrinter); 
       PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 

       InputStream is=null; 
       try { 
        printString+="\f"; 
        System.out.println(printString); 
        is = new ByteArrayInputStream(printString.getBytes("UTF8"));      
       } catch (UnsupportedEncodingException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

       PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
       pras.add(new Copies(1)); 


       DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 

       Doc doc = new SimpleDoc(is, flavor, null); 

       DocPrintJob job = service.createPrintJob(); 

       PrintJobWatcher pjw = new PrintJobWatcher(job); 
       try { 
        job.print(doc, pras); 
       } catch (PrintException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       pjw.waitForDone(); 
       try { 
        is.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

Odpowiedz

6

Mogę sobie wyobrazić, że to własność polecenia (w postaci sekwencji bajtów) należy wysłać do drukarki, aby go wyciąć.

Wydaje się, że dla TSP100, this page można przypuszczać, że 27, 100 i 3 to bajty, których potrzebujesz.

Niezależnie od modelu, kiedy znalazłem polecenia w postaci sekwencji bajtów, powinieneś być w stanie wysłać go za pomocą podobnego podejścia do powyżej:

DocPrintJob job = PrintServiceLookup.lookupDefaultPrintService().createPrintJob(); 
byte[] bytes = {27, 100, 3}; 
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE; 
Doc doc = new SimpleDoc(bytes, flavor, null); 
job.print(doc, null); 
+0

Moja drukarka jest gwiazdą TSP100 drukarka, ale to polecenie najwyraźniej nic nie robi. –

+0

Czy masz na myśli, że wypróbowałeś powyższe kody (które nie będą działać, ponieważ są one dla innego modelu) lub kody do drukarki? Z tego linku (http://www.starmicronics.com/absolutefm/absolutefm/attachments/92/Application%20note%20-%20Star%20Micronics%20Printers%20with%20Booklog%20Software.pdf) należy wybrać pozycje w bajcie tablica wydaje się być "27, 100, 3". Czy to działa w ogóle? – berry120

+0

To się udało! Wielkie dzięki za znalezienie tego dla mnie! –

Powiązane problemy