Estoy tratando de configurar un servicio que se ejecuta por la noche para imprimir un montón de facturas y otros documentos de forma automática a un montón de impresoras. A partir de ahora puedo imprimir bien los documentos, pero necesito poder especificar una bandeja (una con el membrete de nuestra empresa y otra con papel blanco estándar). Todo lo que he intentado hasta ahora no ha funcionado en absoluto, especifico el atributo MediaTray en el conjunto PrintRequestAttribute, pero parece que no hace nada. ¿Alguien tuvo alguna experiencia con algo como esto?Cómo imprimir un pdf en una bandeja específica sin interacción del usuario en java
Mi código actual que estoy usando para las pruebas tiene este aspecto.
// 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);
posible duplicado de [Impresión con atributos (control de la bandeja, Duplex, etc ...) utilizando la biblioteca javax.print] (http://stackoverflow.com/questions/14328012/printing-with-attributestray-control -duplex-etc-using-javax-print-library) –