2013-05-16 12 views
5

Makbuz yazıcısına yazdırmak için Java Baskı Hizmeti API'sini kullanıyorum. İnce yazdırır, ancak bittiğinde otomatik olarak kesilmez. Yazıcıya otomatik kesime nasıl bildirilir? Bunu kesmek için yazıcıya göndermek gerekir (bir bayt dizisi formunda) özel bir komut olmadığını hayal ediyorumJava: Makbuz Yazıcısı otomatik kesim

 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(); 
       } 

cevap

6

:

İşte baskıya kullanıyorum kodu.

TSP100 için, this page, 27, 100 ve 3'e gereksinim duyduğunuz bayt olma hakkına sahiptir. modeli, sen bayt dizisi şeklinde komutu bulduğunuzda, sen gerekir ne olursa olsun

yukarıda benzer bir yaklaşım kullanarak göndermek:

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

Yazıcım Star TSP100 olduğunu Yazıcı, ancak bu komut hiçbir şey yapmıyor gibi görünüyor. –

+0

Yukarıdaki kodları (yani farklı bir model için işe yaramayacakları için) veya yazıcınızın kodlarını denediniz mi? Bu bağlantıdan (http://www.starmicronics.com/absolutefm/absolutefm/attachments/92/Application%20note%20-%20Star%20Micronics%20Printers%20with%20Booklog%20Software.pdf) byte'da istediğiniz girdileri dizi '27, 100, 3' gibi görünüyor. Bu hiç işe yarıyor mu? – berry120

+0

Bu başardı! Bunu benim için bulduğun için çok teşekkürler! –