@Override public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException { Graphics2D g2; if (pageIndex > 0) return Printable.NO_SUCH_PAGE; g2 = (Graphics2D) g; g2.translate(pf.getImageableX(), pf.getImageableY()); Dimension imageSize = calcDimension(image, pf.getImageableWidth(), pf.getImageableHeight()); g2.drawImage( image, (int) (pf.getImageableWidth() / 2 - imageSize.width / 2), (int) (pf.getImageableHeight() / 2 - imageSize.height / 2), imageSize.width, imageSize.height, this); g.setXORMode(Color.white); Font font = g2.getFont().deriveFont(6); g2.setFont(font); int fileNameWidth = g2.getFontMetrics(font).stringWidth(fileName); if (fileNameWidth > imageSize.width) { pathStrings = fileName.split("\\\\"); result = pathStrings[0] + "\\...\\" + pathStrings[pathStrings.length - 1]; resultWidth = g.getFontMetrics(font).stringWidth(result); // TODO: // Add another if for truncating to just a few letters if needed. } else { result = fileName; resultWidth = g.getFontMetrics(font).stringWidth(result); } g.drawString( result, (int) (pf.getImageableWidth() / 2 + imageSize.width / 2 - resultWidth - 5), (int) (pf.getImageableHeight() / 2 + imageSize.height / 2 - 5)); return Printable.PAGE_EXISTS; }