I've got a java application (Openbravo POS) that allows the user to configure a printer. The printer can either be a POS line printer (like the Epson TM-T99iv), a javapos printer or a cups printer.
When the application prints via the inbuilt printer driver directly to the serial/usb port - I get the correct output. When the application prints via cups, I get a 2.5 cm blank void down the left hand side of the page. OB Pos has an option to fix this that seems to work under windows which is to adjust the x,y start position but I have not been able to make this work under Linux.