レシートを印刷するために、印刷可能なインターフェイスを実装しようとしています。次のコードは機能していますが、問題は必要なレシートの上部に白紙を追加することです。1 ページではなく 2 ページが印刷されるのはなぜですか (白紙は A4 サイズです)。
package slg.stock.util.print;
public class ForumPost implements Printable {
private Paper receiptPaper;
private double paperWidth = 2.2;
private double paperHeight = 7;
double leftMargin = 0.05;
double rightMargin = 0.1;
double topMargin = 0.4;
double bottomMargin = 0.1;
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 1) {
return Printable.NO_SUCH_PAGE;
}
receiptPaper = new Paper();
receiptPaper.setSize(paperWidth * 72.0, paperHeight * 72.0);
receiptPaper.setImageableArea(leftMargin * 72.0, topMargin * 72.0,
(paperWidth - leftMargin - rightMargin) * 72.0,
(paperHeight - topMargin - bottomMargin) * 72.0);
pageFormat.setPaper(receiptPaper);
Graphics2D g2d = (Graphics2D) graphics;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g2d.drawString("helo \n"
+ new Date()+ " ", 5, 5);
return Printable.PAGE_EXISTS;
}
public static void main(String args[]) {
try {
PrinterJob job = PrinterJob.getPrinterJob();
ForumPost printer = new ForumPost();
job.setPrintable(printer);
job.print();
} catch (PrinterException ex) {
}
}
}
私は印刷 API に精通していません。