title: Save PDF file using Java Printable on Linux system
body: <p>I have a working class that creates and saves a PDF file for the user by implementing Printable and using PrinterJob to create the PDF to a set location. This works on a Windows system perfectly but I'm having trouble doing this on a Linux system.</p>
  <p>I'm trying to automate the creation of these PDF's on a Linux system as follows:</p>
  <pre><code>    PrinterJob job = PrinterJob.getPrinterJob();
      job.setPrintable( this );
      job.setPrintService( defaultPrinter );
      // create a new HashPrintRequestAttributeSet
      HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
      // set the output file as a destination 
      attributes.add(new Destination(new File(fileName).toURI()));
      job.print(attributes);
  </code></pre>
  <p>I have installed cups-pdf on my Linux system and pointed the <code>defaultPrinter</code> to that <code>PrintService</code>. The file gets created but it is not a PDF file but a Postscript file. CUPS doesn't even create a print job for this so I believe it is just creating a postscript file with printer commands.</p>
  <p>The Postscript file starts as follows:</p>
  <pre><code>%!PS-Adobe-3.0
  %%BeginProlog
  /imStr 0 def /imageSrc {currentfile /ASCII85Decode filter /RunLengthDecode filter  imStr readstring pop } def
  /BD {bind def} bind def
  /D {def} BD
  /C {curveto} BD
  /L {lineto} BD
  /M {moveto} BD
  /R {grestore} BD
  /G {gsave} BD
  /N {newpath} BD
  /P {closepath} BD
  /EC {eoclip} BD
  /WC {clip} BD
  /EF {eofill} BD
  /WF {fill} BD
  /SG {setgray} BD
  /SC {setrgbcolor} BD
  ...
  </code></pre>
  <p>I know I can use PDFBox to draw the PDF myself but all the code is there for creating a PDF file and it all works on windows. Is it possible to get a linux system to create a PDF and save it to a location using PrinterJob?</p>