Я пытаюсь настроить службу, которая работает ночью, чтобы автоматически распечатывать несколько счетов и другие документы на нескольких принтерах. На данный момент я могу печатать документы нормально, но мне нужно иметь возможность указать лоток (один с фирменным бланком нашей компании и один со стандартной белой бумагой). Все, что я пробовал до сих пор, вообще не работает атрибут MediaTray в наборе PrintRequestAttribute, но это, похоже, ничего не делает. У кого-нибудь был опыт с чем-то вроде этого?
Мой текущий код, который я использую для тестирования, выглядит следующим образом.
// Create a PDFFile from a File reference
File f = new File("C:\\File.pdf");
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
PDFPrintPage pages = new PDFPrintPage(pdfFile);
// Create Print Job
PrinterJob pjob = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pjob.setJobName(f.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
// Send print job to default printer
PrintRequestAttributeSet aset=new HashPrintRequestAttributeSet();
aset.add(MediaTray.MIDDLE); //Used several of the tray options here
pjob.print(aset);