다음 코드를 사용하여 이미지를 인쇄하려하지만이 문서는 인쇄 작업 대기열에 머무르며 인쇄를 거부합니다. 제 (창) 인쇄 작업 대기열에서 나는 얻을 :Java - 이미지를 용지/프린터로 인쇄 할 수 없습니다.
에 DocumentName : 이미지 상태를 인쇄 : [아무것도] 페이지 : 1, 크기 : 2.1MB합니다.
동일한 프린터 (단어 등)를 사용하는 다른 응용 프로그램에서는 발생하지 않습니다.
친절하게 내 실수는 어디에서 볼 수 있습니까? 감사. 문제의
public static void main(String[] args) {
//new Painter();
MediaTracker tracker = new MediaTracker(new JPanel());
try {
Image img = ImageIO.read(new File(
"C:\\Users\\David\\Desktop\\print.jpg"));
tracker.addImage(img, 1);
tracker.waitForAll();
print(img);
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static void print(final Image img) {
PrinterJob printjob = PrinterJob.getPrinterJob();
printjob.setJobName("Print");
ImgPrinter printable = new ImgPrinter(img);
try {
System.out.println("Printing.");
printable.printPage();
} catch (PrinterException ex) {
System.out.println("NO PAGE FOUND." + ex);
}
}
private static class ImgPrinter implements Printable {
Image img;
public ImgPrinter(Image img) {
this.img = img;
}
public int print(Graphics pg, PageFormat pf, int pageNum) {
if (pageNum != 0) {
return Printable.NO_SUCH_PAGE;
}
//BufferedImage bufferedImage = new BufferedImage(img.getWidth(null),
//img.getHeight(null), BufferedImage.TYPE_INT_RGB);
//bufferedImage.getGraphics().drawImage(img, 0, 0, null);
Graphics2D g2 = (Graphics2D) pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.drawImage(img, 0, 0, img.getWidth(null), img.getHeight(null), null);
return Printable.PAGE_EXISTS;
}
public void printPage() throws PrinterException {
PrinterJob job = PrinterJob.getPrinterJob();
boolean ok = job.printDialog();
if (ok) {
job.setJobName("TEST JOB");
job.setPrintable(this);
job.print();
}
}
}
스크린 샷 :
이 모두 하드웨어와 소프트웨어 프린터 (XPS 작가, CutePDF, 캐논 프린터)와 함께 발생합니다. 하드웨어는 화면에 "준비 중"이라는 메시지를 영원히 보여 주며 모든 잉크를 낭비한다고 생각합니다. 확실하지 않습니다. 그렇다면이 코드는 테스트하는 데 비용이 많이 듭니다 ....
워드 문서 또는 다른 방법으로 인쇄 할 때 이러한 프린터가 문제가되지 않습니다.
편집 : 누군가가 소프트웨어 프린터를 제안 할 수 있습니까?
Click here for the Image I am trying to print.
Click here to see the print queue.
에 다음 줄을 사용이 라인의 왜곡되지 않도록하기 위해 사용할 수있는 다른 것은 . 큰 이미지를 시도하면 어떻게됩니까? – David
@ David 내 대답을 편집 중입니다. 큰 이미지가 페이지에서 나왔음을 깨달았습니다. 이미지를 직접 인쇄하십시오. 코드에서 "drawImage"를 두 번 호출했습니다. –
메서드로 전달 된 이미지에 직접 drawImage를 적용해도 문제가 해결되지 않습니다. (내 질문 수정. – David