2010-06-01 25 views
1

Java Printable을 구현하고 인쇄 메소드에 코드를 삽입하여 일부 Epson 영수증 프린터로 인쇄합니다. 프린터에 텍스트를 그리려면 Graphics2D.drawString을 사용합니다. 또한 다른 프린터로 인쇄 할 때 텍스트 크기와 비교하는 방법을 알아보기 위해 프린터를 곧바로 그립니다. 영수증 프린터로 인쇄 할 때 용지의 텍스트는 레이저 프린터 또는 XPS 작성기 가상 인쇄에 인쇄하는 폭의 약 두 배입니다. 자바가 Graphics2D 객체에 텍스트를 그리는 방식에 문제가 있습니까? Java 최신 버전을 6 업데이트 20 설치했습니다.Java로 영수증 프린터로 인쇄 할 때 텍스트 스트레칭을 수정하십시오.

어떤 내용을 살펴 보는 것이 도움이 될 수 있습니다.

감사합니다.

여기 코드를 사용하고 있습니다. 이 예제에서는 XPS 작성자에게 보낼 때 rect의 오른쪽 가장자리에 'c'문자가 표시됩니다. 영수증 프린터로 인쇄하면 6이 rect의 오른쪽 가장자리에 있으며 텍스트를 말할 수 있습니다 훨씬 더 넓어야합니다. rect가 올바른 크기 인 것 같습니다.

페이지 및 여백 크기를 변경해 보았지만 텍스트 문제를 해결하지 못했습니다. Microsoft Word에서 프린터를 자동으로 감지하는 방법에서이 용지 크기와 여백을 얻었습니다. Word 영수증 프린터 올바르게 텍스트를 인쇄합니다.

public static void main(String[] args) { 
    PageFormat format = new PageFormat(); 
    Paper paper = new Paper(); 

    double paperWidth = 3.25; 
    double paperHeight = 11.69; 
    double leftMargin = 0.19; 
    double rightMargin = 0.25; 
    double topMargin = 0; 
    double bottomMargin = 0.01; 

    paper.setSize(paperWidth * 72.0, paperHeight * 72.0); 
    paper.setImageableArea(leftMargin * 72.0, topMargin * 72.0, 
     (paperWidth - leftMargin - rightMargin) * 72.0, 
     (paperHeight - topMargin - bottomMargin) * 72.0); 

    format.setPaper(paper); 

    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
    aset.add(OrientationRequested.PORTRAIT); 

    PrinterJob printerJob = PrinterJob.getPrinterJob(); 
    Printable printable = new ReceiptPrintTest(); 
    format = printerJob.validatePage(format); 
    printerJob.setPrintable(printable, format); 
    try { 
     printerJob.print(aset); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 



public class ReceiptPrintTest implements Printable { 

    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 

     if (pageIndex < 0 || pageIndex >= 1) { 
      return Printable.NO_SUCH_PAGE; 
     } 

     Graphics2D g2d = (Graphics2D) graphics; 
     g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); 

     Font font = new Font("Arial",Font.PLAIN, 14); 

     g2d.setFont(font); 
     g2d.drawString("1234567890abcdefg", 50, 70); 

     g2d.drawRect(50, 0, 100, 50); 

     return Printable.PAGE_EXISTS; 
    } 

답변

0

setFont을 사용하여 글꼴을 설정해 보셨습니까?

+0

예, 제가 사용하고있는 문제와 코드에 대한 정보를 추가했습니다. – user469650

관련 문제