title: How to print a pdf to a specific tray with no user interaction in java
body: <p>I'm trying to set up a service that runs at night to print a bunch of invoices and other documents automatically to a bunch of printers. As of right now I can print the documents fine, but I need to be able to specify a tray (one with our company letterhead and one with stock white paper) Everything i've tried so far hasn't worked at all, I specify the MediaTray attribute in the PrintRequestAttribute set but that doesn't seem to do anything. Anybody had any experience with something like this?</p>
  
  <p>My current code I'm using for testing looks like this.</p>
  
  <pre><code>// 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);
  </code></pre>