使用带有参数的PrinterJob.setPrintable()版本
PageFormat。
在PageFormat中,设置纸张的可成像区域没有边框(x
= 0,y = 0,width =纸张的宽度,height =纸张的高度)。
您可能想通过PrinterJob.validatePage()来提供该文件,该文件:
返回页面的克隆,其设置已调整为与该PrinterJob的当前打印机兼容。例如,返回的PageFormat可以将其可成像区域调整为适合当前打印机使用的纸张物理区域。
这是一个好主意,因为打印机可能不支持无边界打印,并且它将通过此方法来调整您的
PageFormat设置,以使设置与打印机兼容。
这是一个示例,该示例在带有删除边框的页面上打印一些文本:
PrinterJob pj = PrinterJob.getPrinterJob();PageFormat format = pj.getPageFormat(null);Paper paper = format.getPaper();//Remove borders from the paperpaper.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();在Windows上使用Postscript-> File Printer测试。仍然留有小边框,但这可能是打印机驱动程序的限制。



