Bufferedimage を印刷するために PrinterJob オブジェクトを使用しています。BufferedImage を処理して Paper Format などのプリンタ ジョブに送信しましたが、カード プリンタに適合させることができません。ハードディスクに保存し、Windows 印刷マネージャーを介して印刷すると、カード プリンターでは非常に良好に印刷されますが、PrinterJob では大きすぎてカードに収まりません。
カードのサイズは 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について知りません。
誰かが現在のサイズについて手がかりを持っていますか、計算を間違えましたか? ありがとう。