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;
}
예, 제가 사용하고있는 문제와 코드에 대한 정보를 추가했습니다. – user469650