Уменьшение полей - Java Printing - PullRequest
       18

Уменьшение полей - Java Printing

4 голосов
/ 24 сентября 2011

Я использую этот код для печати на бумаге:

//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 Ответ

2 голосов
/ 24 сентября 2011
Размер бумаги

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

Немногие потребительские принтеры имеют полный выпуск , поэтому площадь печати меньше, чем можно предположить по физическим размерам бумаги. По сути, принтер не может положить чернила туда, где он не может печатать.

...