Как распечатать PDF-файл в определенном лотке без взаимодействия с пользователем в java

Я пытаюсь настроить службу, которая работает по ночам, чтобы автоматически распечатать несколько счетов и других документов на нескольких принтерах. На данный момент я могу нормально распечатать документы, но мне нужно указать лоток (один с фирменным бланком нашей компании и один со стандартным белым листом бумаги). Все, что я пробовал до сих пор, вообще не сработало, я указываю атрибут 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);
7
задан Galbrezu 25 February 2011 в 17:55
поделиться