У меня была такая же проблема некоторое время назад, я сделал это, может быть, мог бы помочь вам. Дайте мне знать.
public static boolean imprimirDocto(String documentPath, String printerName) {
File f = new File(documentPath);
try {
PDDocument doc = PDDocument.load(f);
PrinterJob pj = PrinterJob.getPrinterJob();
PrintService[] ps = PrintServiceLookup.lookupPrintServices(null, null);
PrintService printService = null;
if (ps.length > 0) {
//This searchs for all the printers, and looks for the 'printerName'
for (int i = 0; i < ps.length; i++) {
System.out.println("Printer name: " + ps[i]);
if (ps[i].getName().toLowerCase().contains(printerName.toLowerCase())
|| ps[i].getName().contains(printerName)) {
printService = ps[i];
System.out.println("Setting the printer...");
pj.setPrintService(printService);
i = ps.length;
}
}
pj.setPageable(new PDFPageable(doc));
pj.print();
return true;
} else {
return false;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}