【问题标题】:Making margins smaller - Java Printing缩小边距 - Java 打印
【发布时间】:2011-09-23 22:25:59
【问题描述】:

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

//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;
    }

我正在尝试以编程方式减小边距的大小。无论我做什么,图像两侧似乎总是缺少一大块(除非我从打印对话框中删除边距 - 但正如我所说,我想以编程方式删除它们以自动化整个过程)。

【问题讨论】:

  • hmm ...当“从打印对话框中删除边距”时,它是否打印到纸张的边缘?而不是让它们像打印机允许的那样小,然后稍微缩放图像以适应?
  • @kleopatra 抱歉造成误会。我想让边距尽可能小。打印对话框不会完全删除它们,但几乎可以。我也无法缩放图像。
  • 你可能会看到一些你可以使用的东西here

标签: java swing printing graphics2d


【解决方案1】:

US Letter 尺寸的纸张,例如,尺寸为 8½ x 11 英寸。每英寸 72 个点,即 612 x 792。

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

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,因此可打印区域小于纸张的物理尺寸。实际上,打印机无法将墨水放在无法打印的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多