進出口使用的PrinterJob對象,以打印我的BufferedImage,我有一個BufferedImage我proccess,並與論文格式等發送到打印機的工作,我不能讓它能夠裝配到我的卡打印機。當我將它保存到我的硬盤並通過Windows打印管理器打印時,它在我的卡片打印機上打印效果非常好,但是與PrinterJob一起出來太大而且不適合卡片裝修的PrinterJob對象BufferedImage的特定打印格式
卡片的尺寸爲86X54mm,我的緩衝圖像的大小是1300x816px 驗證碼:
PrinterJob printjob = PrinterJob.getPrinterJob();
printjob.setJobName("CardPrint");
Printable printable = new Printable() {
public int print(Graphics pg, PageFormat pf, int pageNum) {
if (pageNum > 0) {
return Printable.NO_SUCH_PAGE;
}
JLayeredPane j1 = new JLayeredPane();
Dimension size = j1.getSize();
j1.print(bi.getGraphics());
Graphics2D g2 = (Graphics2D) pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.drawImage(bi, 0, 0, (int) pf.getWidth(), (int) pf.getHeight(), null);
return Printable.PAGE_EXISTS;
}
};
Paper paper = new Paper();
paper.setImageableArea(0, 0, 0, 0);
paper.setSize(1.15, 0.72);
PageFormat format = new PageFormat();
format.setPaper(paper);
printjob.setPrintable(printable, format);
try {
printjob.printDialog();
printjob.print();
} catch (Exception eee){
System.out.println("NO PAGE FOUND."+eee.toString());
}
我發現 paper.setSize(1.15,0.7); 是英寸(http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/print/Paper.html) paper.setImageableArea(0,0,0,0); ,我不知道這個setImageableArea。
沒有任何一個有關於當前尺寸的線索,難道我犯了一個錯誤計算? 謝謝。
謝謝,這種方法有效,但結果很差。我認爲下一步將是檢查如何使用Windows打印對話框進行打印。我發佈這個問題btw:http://stackoverflow.com/questions/14729127/printing-an-image-from-harddrive-via-windows-print-images-console-java ...再次感謝你 –