2012-07-28 6 views
1

(빅솔론 SRP350 플러스)를 시도하고 자동 처음 열 프린터를 사용 영수증 (빅솔론의 SRP 350 플러스)이상한 행동 인쇄 열 프린터 JAVA 응용 프로그램에서 자동 절단 기능을 구현하기 위해 나는 자바 응용 프로그램을

을 절감하면서 영수증을 자동 절단하는 데 문제가 있었지만 많은 시도와 Google 검색 후 영수증 자동 절단을 관리합니다. 그러나 문제는 테스트 시스템에 전쟁 애플리케이션을 배포 할 때 문제가되지 않지만 결국에는 종이를 자르지 않고 있다는 것입니다. 나는 심지어 내 개발 기계의 바람둥이에 전쟁 파일을 배포하고 잘 자르고있다.

개발 컴퓨터와 테스트 컴퓨터 모두 Windows 7 - 궁극적 인, 동일한 apache-tomcat-6.0.18 및 JDK6/JRE6을 사용하고 있습니다.

처음에는 테스트 기계에 jre6이 설치되었고 자동 절단이 실패했습니다. 내 개발 컴퓨터에서 jdk6을 사용하여 성공적으로 설치하지 못했습니다.

두 기계는 서로 다른 하드웨어 구성의 다른 브랜드입니다. 누구든지 나를 도와 줄 수 있습니까? 이것은 이전에 설치된 JRE6과 관련이 있으며 Windows 레지스트리에서 제대로 제거되지 않았습니까?

나는 mysql 5.5와 함께 grails 1.3.7을 사용하고있다.

내 코드는 다음과 같습니다 : 사람이 자동 절단 기능을 구현할 수있는 더 좋은 방법 좀 도와 수 있다면

public void printBill(String printData) throws Exception { 
    PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();  
    pras.add(new Copies(5));  
    pras.add(new PrinterResolution(180,180,PrinterResolution.DPI)); 


    PrintService pss[] = PrintServiceLookup.lookupPrintServices(null,pras);  
    if (pss.length == 0) { 
     throw new RuntimeException("No printer services available."); 
    } 

    if(printData == null) { 
     throw new Exception("nothing to print"); 
    } 

    PrintService ps = pss[0];  

    DocPrintJob job = ps.createPrintJob(); 
    DocAttributeSet das = new HashDocAttributeSet();  
    das.add(new PrinterResolution(180,180,PrinterResolution.DPI)); 

    byte[] desc = printData.getBytes(); 
    Doc doc = new SimpleDoc(desc, DocFlavor.BYTE_ARRAY.AUTOSENSE, das);  

    try { 
     job.print(doc, pras); 
     cutPaper(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

/* 
* TODO improvision to auto cut bill, need to find a proper way to cut 
*/ 
private void cutPaper() throws Exception{ 
    TempPageCutter pageCutter = new RestaurantPrinter().new TempPageCutter(); 

    pageCutter.cutReceipt(); 

} 

private class TempPageCutter implements Printable { 

    @Override 
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
      throws PrinterException { 
     if(pageIndex > 0) 
      return NO_SUCH_PAGE; 

     System.out.println("Cutting"); 
     graphics.drawString("", 0, 0); 

     return PAGE_EXISTS; 
    } 

    public void cutReceipt() throws PrinterException { 
     System.out.println("cutReceipt"); 
     PrintService[] printService = PrinterJob.lookupPrintServices(); 

     if(printService == null || printService.length < 1) { 
      return; 
     } 
     PrinterJob job = PrinterJob.getPrinterJob(); 
     job.setPrintable(this); 
     job.print(); 
    } 


} 

그것이 큰 도움이 될 것입니다.

+0

나는 전에 Bixolon 프린터로 Java로 작업 해 본 적이 없습니다. 나에게 머리를 쏠 수 있습니까? JAVA를 사용하여 인쇄하는 간단한 예입니다. – yuva

답변

0

Windows 7 프린터 설정 페이지에서 bixolon srp 350 plus 프린터를 기본 프린터로 설정하여 자동 절단 문제를 해결할 수있었습니다. 아직도 그 약간 별났다. 누구든지 자동 절단 기능을 구현하는 더 나은 방법을 통해 나를 도울 수 있다면 여전히 큰 도움이 될 것입니다. 건배!

+0

bixolon 프린터를 사용하는 프린터에 jar 파일이 필요합니까? 나는 하나 가지고 있고 그것에 인쇄하는 자바를 사용하고 싶습니다. – Gillardo

+0

필요하지 않습니다. 그러나 웹 브라우저에서 인쇄하는 데 사용하는 경우 QZ 인쇄본과 그 인쇄본을 사용합니다. 그러나 자바 애플리케이션에서 인쇄하기를 원한다면 세부 사항을 인쇄 크기에 맞추고 Java API를 호출해야합니다. DocPrintJob 및 다른 Java 클래스에서 PrintService를 사용합니다. –

+0

어떻게 용지를 자르셨습니까? 나는 D420을 사용하고 있으며 인쇄가 잘되는 것처럼 보이지만 용지는 약 1 미터 동안 계속 급지 및 급지를 한 다음 오류로 멈 춥니 다. 나는 자네에게 모범을 보이면 자필을 강요 할 필요가 있다고 생각한다. – Gillardo