This is very tricky to do, and I seriously doubt you'll find a pure Java solution. I spent nearly a week trying, and gave up. I did find a nearly-pure way though ...
In effect, if your printer does not support, or have, a specific PDF driver, you must use the postscript driver.
First you need to convert the file to a postscript file. The best way I found to do this was use the "xpdf" (google it) C program - this is quick and keeps the file very small. This is the only non-Java bit to do. Invoke xpdf using the Runtime.getRuntime() call.
Once in PDF, print as normal.
(BTW There are no *real* pure Java solutions for any Java code, because Java is just built on top of C/C++ libraries anyway !)