有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing使Java打印的页边距更小

我正在使用此代码在纸上打印:

//Overriden from printable interface
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
            throws PrinterException {

        if (pageIndex != 0) {
            return Printable.NO_SUCH_PAGE;
        }

        Paper a4 = new Paper();
        a4.setImageableArea(0, 0, a4.getWidth(), a4.getHeight());
        pageFormat.setPaper(a4);
        pageFormat.setOrientation(PageFormat.PORTRAIT);

        Graphics2D g2d = (Graphics2D)g;
        //g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
        this.setDoubleBuffered(false);
        panel.print(g2d);
        JOptionPane.showMessageDialog(null, new ImageIcon(image));
        this.setDoubleBuffered(true);

        return Printable.PAGE_EXISTS;
    }

我正试图以编程的方式减少页边距的大小。无论我做什么,图像的侧面似乎总是有一大块空白(除非我从“打印”对话框中删除了边距,但正如我所说的,我希望通过编程方式删除边距,以自动化整个过程)


共 (1) 个答案

  1. # 1 楼答案

    例如,{a1}大小的纸张的尺寸为8½x 11英寸。每英寸72点,即612 x 792

    在选择了该尺寸纸张的典型打印机上,^{}对象报告以下区域

    System.out.println(pf.getImageableX() + " " + pf.getImageableY()
        + " " + pf.getImageableWidth() + " " + pf.getImageableHeight());
    
    18.0 18.0 576.0 734.0
    18.0 18.0 576.0 734.0
    

    很少有消费类打印机是full-bleed,因此定价面积小于纸张的物理尺寸。实际上,打印机无法将墨水放在无法打印的地方