title: javax.print.attribute.PrintRequestAttributeSet options ignored by Printer
body: <p>I have to print a file (plain text) using javax.print api's. I am able to lookup the printer and submit a print job. But i am able to only print one copy of the file. Below is the code i have been using.</p>
  
  <p>None of the options/attributes i specified using the PrintRequestAttributeSet is recognized by the printer. Though i specify 2 copies to print, the printer only prints one copy. Am i doing anything wrong here? </p>
  
  <p>Printer used: Canon iR5050 PCL6</p>
  
  <hr>
  
  <p>package com.print;</p>
  
  <pre><code>import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.io.InputStream;
  
  import javax.print.Doc;
  import javax.print.DocFlavor;
  import javax.print.DocPrintJob;
  import javax.print.PrintException;
  import javax.print.PrintService;
  import javax.print.PrintServiceLookup;
  import javax.print.SimpleDoc;
  import javax.print.attribute.HashPrintRequestAttributeSet;
  import javax.print.attribute.PrintRequestAttributeSet;
  import javax.print.attribute.standard.Copies;
  import javax.print.attribute.standard.Finishings;
  import javax.print.attribute.standard.MediaSizeName;
  import javax.print.attribute.standard.NumberUp;
  import javax.print.attribute.standard.OrientationRequested;
  import javax.print.attribute.standard.Sides;
  import javax.print.event.PrintJobAdapter;
  import javax.print.event.PrintJobEvent;
  
  public class TestPrint {
  
   /**
    * @param args
    */
   public static void main(String[] args) {
    // TODO Auto-generated method stub
    String fileName = "D:/test.log";
    // Open the file
    InputStream in = null;
    try {
     in = new FileInputStream(fileName);
    } catch (FileNotFoundException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
  
    // Figure out what type of file we're printing
    DocFlavor myFormat = getFlavorFromFilename(fileName);
    // Create a Doc
    Doc myDoc = new SimpleDoc(in, myFormat, null);
    // Build a set of attributes
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(OrientationRequested.LANDSCAPE);
    aset.add(new Copies(2));
    aset.add(Sides.DUPLEX);
    aset.add(MediaSizeName.NA_LETTER);
    aset.add(new NumberUp(2));
    aset.add(Finishings.STAPLE);
    // discover the printers that can print the format according to the
    // instructions in the attribute set
    PrintService[] services = PrintServiceLookup.lookupPrintServices(
      myFormat, aset);
  
    // Create a print job from one of the print services
    if (services.length &gt; 0) {
     System.out.println("The print sent to&gt;&gt;&gt;" + services[0].getName());
     DocPrintJob job = services[0].createPrintJob();
  
     // Monitor the print job with a listener
     job.addPrintJobListener(new PrintJobAdapter() {
      public void printDataTransferCompleted(PrintJobEvent e) {
       System.out.println("Data transfer completed!");
      }
  
      public void printJobNoMoreEvents(PrintJobEvent e) {
       System.out.println("No more events!");
      }
  
      public void printJobRequiresAttention(PrintJobEvent e) {
       System.out.println("Requires Attention!");
      }
  
      public void printJobFailed(PrintJobEvent e) {
       System.out.println("Print Job Failed!");
      }
  
      public void printJobCompleted(PrintJobEvent e) {
       System.out.println("Print Job Completed!");
      }
  
      public void printJobCanceled(PrintJobEvent e) {
       System.out.println("Print Job Cancelled!");
      }
     });
  
     try {
      job.print(myDoc, aset);
     } catch (PrintException pe) {
      pe.printStackTrace();
     }
     System.out.println("The print job ........");
    }
   }
  
   // A utility method to return a DocFlavor object matching the
   // extension of the filename.
   public static DocFlavor getFlavorFromFilename(String filename) {
    String extension = filename.substring(filename.lastIndexOf('.') + 1);
    extension = extension.toLowerCase();
    if (extension.equals("gif"))
     return DocFlavor.INPUT_STREAM.GIF;
    else if (extension.equals("jpeg"))
     return DocFlavor.INPUT_STREAM.JPEG;
    else if (extension.equals("jpg"))
     return DocFlavor.INPUT_STREAM.JPEG;
    else if (extension.equals("png"))
     return DocFlavor.INPUT_STREAM.PNG;
    else if (extension.equals("ps"))
     return DocFlavor.INPUT_STREAM.POSTSCRIPT;
    else if (extension.equals("txt"))
     return DocFlavor.INPUT_STREAM.TEXT_PLAIN_HOST;
    // Fallback: try to determine flavor from file content
    else
     return DocFlavor.INPUT_STREAM.AUTOSENSE;
   }
  
  }
  </code></pre>
  
  <hr>