3

レシートを印刷するために、印刷可能なインターフェイスを実装しようとしています。次のコードは機能していますが、問題は必要なレシートの上部に白紙を追加することです。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 に精通していません。

4

0 に答える 0