Используйте версию PrinterJob.setPrintable () , которая принимает аргумент PageFormat
.
В PageFormat установите область изображения для бумаги без рамки (x = 0, y = 0, ширина = ширина бумаги, высота = высота бумаги).
Возможно, вы захотите передать это через PrinterJob.validatePage () , который:
Возвращает клон страницы с его настройками, настроенными для совместимости стекущий принтер этого PrinterJob.Например, у возвращенного PageFormat может быть настроена область изображения, чтобы она соответствовала физической области бумаги, используемой текущим принтером.
Это хорошая идея, поскольку принтер может не поддерживать печать без полей, и этот метод настроит ваш PageFormat
так, чтобы настройки были совместимы с принтером.
ЗдесьПример, который печатает некоторый текст на странице с удаленными границами:
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat format = pj.getPageFormat(null);
Paper paper = format.getPaper();
//Remove borders from the paper
paper.setImageableArea(0.0, 0.0, format.getPaper().getWidth(), format.getPaper().getHeight());
format.setPaper(paper);
pj.setPrintable(new Printable()
{
@Override
public int print(Graphics pg, PageFormat pf, int pageNum)
throws PrinterException
{
if (pageNum > 0)
return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
int textHeight = g2.getFontMetrics().getHeight();
g2.drawString("Good morning, what will be for eating?", 0, textHeight);
return Printable.PAGE_EXISTS;
}
}, format);
if (!pj.printDialog())
return;
pj.print();
Протестировано с использованием Postscript -> Файловый принтер в Windows.Осталась небольшая граница, но это, скорее всего, ограничение драйвера принтера.