]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
command line support for new ps renderer
authorKeiron Liddle <keiron@apache.org>
Fri, 22 Jun 2001 09:18:24 +0000 (09:18 +0000)
committerKeiron Liddle <keiron@apache.org>
Fri, 22 Jun 2001 09:18:24 +0000 (09:18 +0000)
also cleaned up code
Submitted by:  Jeremias Maerki <jeremias.maerki@outline.ch>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@194311 13f79535-47bb-0310-9956-ffa450edef68

src/org/apache/fop/apps/CommandLineOptions.java
src/org/apache/fop/apps/Driver.java

index 4358109570604abc632fed5569f380caebdfc9db..61b78a4d07f5df5b00b4ff51892ca7e5a4b61be6 100644 (file)
@@ -1,10 +1,9 @@
-/*
+/* $Id$
  * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  * For details on use and redistribution please refer to the
- * LICENSE file included with these sources."
+ * LICENSE file included with these sources.
  */
 
-
 package org.apache.fop.apps;
 
 //java
@@ -20,7 +19,6 @@ import org.apache.fop.apps.FOPException;
 /**
  *     Options parses the commandline arguments
  */
-
 public class CommandLineOptions {
 
     /* input / output not set */
@@ -39,23 +37,25 @@ public class CommandLineOptions {
     private static final int PRINT_OUTPUT = 4;
     /* output: pcl file  */
     private static final int PCL_OUTPUT = 5;
+    /* output: postscript file  */
+    private static final int PS_OUTPUT = 6;
     /* output: text file  */
-    private static final int TXT_OUTPUT = 6;
-
-       /* System buffers */
-       private static final int BUFFER_FILE = 7;
-       
-       /* System buffers */
-       private static final int AREA_OUTPUT = 8;
-       
+    private static final int TXT_OUTPUT = 7;
+
+    /* System buffers */
+    private static final int BUFFER_FILE = 8;
+
+    /* System buffers */
+    private static final int AREA_OUTPUT = 9;
+
     /* use debug mode*/
     Boolean errorDump = new Boolean(false);
     /* show configuration information */
     Boolean dumpConfiguration = new Boolean(false);
     /*suppress any progress information */
     Boolean quiet = new Boolean(false);
-       /* for area tree XML output, only down to block area level */
-       Boolean suppressLowLevelAreas = new Boolean(false);
+    /* for area tree XML output, only down to block area level */
+    Boolean suppressLowLevelAreas = new Boolean(false);
     /* name of user configuration file*/
     File userConfigFile = null;
     /* name of input fo file  */
@@ -77,42 +77,37 @@ public class CommandLineOptions {
     /* language for user information */
     String language = null;
 
-       private java.util.Hashtable rendererOptions;
-       
-    public CommandLineOptions (String [] args) 
-       throws FOPException, FileNotFoundException
-    {
-       boolean optionsParsed = true;
-       rendererOptions = new java.util.Hashtable();
-       try {
-           optionsParsed = parseOptions(args);
-           if (optionsParsed) {
-               checkSettings ();
-               if (errorDump != null && errorDump.booleanValue()) {
-                   debug();
-               }
-           }
-       }
-       catch (FOPException e) {
-           printUsage();
-           throw e;
-       }
-       catch (java.io.FileNotFoundException e) {
-           printUsage();
-           throw e;
-       }
-       
+    private java.util.Hashtable rendererOptions;
+
+    public CommandLineOptions (String [] args) throws FOPException,
+    FileNotFoundException {
+        boolean optionsParsed = true;
+        rendererOptions = new java.util.Hashtable();
+        try {
+            optionsParsed = parseOptions(args);
+            if (optionsParsed) {
+                checkSettings ();
+                if (errorDump != null && errorDump.booleanValue()) {
+                    debug();
+                }
+            }
+        } catch (FOPException e) {
+            printUsage();
+            throw e;
+        }
+        catch (java.io.FileNotFoundException e) {
+            printUsage();
+            throw e;
+        }
+
     }
-    
 
     /**
      *  parses the commandline arguments
      * @return true if parse was successful and procesing can continue, false if processing should stop
      * @exception FOPException if there was an error in the format of the options
      */
-    private boolean parseOptions (String args[]) 
-       throws FOPException
-    {
+    private boolean parseOptions (String args[]) throws FOPException {
         for (int i = 0; i < args.length; i++) {
             if (args[i].equals("-d") || args[i].equals("--full-error-dump")) {
                 errorDump = new Boolean(true);
@@ -123,7 +118,7 @@ public class CommandLineOptions {
             } else if (args[i].equals("-c")) {
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
-                   throw new FOPException("if you use '-c', you must specify the name of the configuration file");
+                    throw new FOPException("if you use '-c', you must specify the name of the configuration file");
                 } else {
                     userConfigFile = new File (args[i + 1]);
                     i++;
@@ -138,7 +133,7 @@ public class CommandLineOptions {
                 }
             } else if (args[i].equals("-s")) {
                 suppressLowLevelAreas = new Boolean(true);
-            }  else if (args[i].equals("-fo")) {
+            } else if (args[i].equals("-fo")) {
                 inputmode = FO_INPUT;
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
@@ -166,36 +161,36 @@ public class CommandLineOptions {
                     i++;
                 }
             } else if (args[i].equals("-awt")) {
-               setOutputMode(AWT_OUTPUT);
-           } else if (args[i].equals("-pdf")) {
-               setOutputMode(PDF_OUTPUT);
-               if ((i + 1 == args.length) ||
-                   (args[i + 1].charAt(0) == '-')) {
+                setOutputMode(AWT_OUTPUT);
+            } else if (args[i].equals("-pdf")) {
+                setOutputMode(PDF_OUTPUT);
+                if ((i + 1 == args.length) ||
+                        (args[i + 1].charAt(0) == '-')) {
                     throw new FOPException("you must specify the pdf output file");
                 } else {
                     outfile = new File (args[i + 1]);
                     i++;
                 }
             } else if (args[i].equals("-mif")) {
-               setOutputMode(MIF_OUTPUT);
+                setOutputMode(MIF_OUTPUT);
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
-                     throw new FOPException("you must specify the mif output file");
+                    throw new FOPException("you must specify the mif output file");
                 } else {
                     outfile = new File(args[i + 1]);
                     i++;
                 }
             } else if (args[i].equals("-print")) {
-               setOutputMode(PRINT_OUTPUT);
+                setOutputMode(PRINT_OUTPUT);
                 //show print help
                 if (i + 1 < args.length) {
                     if (args[i + 1].equals("help")) {
                         printUsagePrintOutput();
-                       return false;
-                   }
+                        return false;
+                    }
                 }
             } else if (args[i].equals("-pcl")) {
-               setOutputMode(PCL_OUTPUT);
+                setOutputMode(PCL_OUTPUT);
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
                     throw new FOPException("you must specify the pdf output file");
@@ -203,8 +198,17 @@ public class CommandLineOptions {
                     outfile = new File (args[i + 1]);
                     i++;
                 }
+            } else if (args[i].equals("-ps")) {
+                setOutputMode(PS_OUTPUT);
+                if ((i + 1 == args.length) ||
+                        (args[i + 1].charAt(0) == '-')) {
+                    throw new FOPException("you must specify the PostScript output file");
+                } else {
+                    outfile = new File (args[i + 1]);
+                    i++;
+                }
             } else if (args[i].equals("-txt")) {
-               setOutputMode(TXT_OUTPUT);
+                setOutputMode(TXT_OUTPUT);
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
                     throw new FOPException("you must specify the text output file");
@@ -220,9 +224,10 @@ public class CommandLineOptions {
                     outputmode = PDF_OUTPUT;
                     outfile = new File(args[i]);
                 } else {
-                    throw new FOPException("Don't know what to do with " + args[i]);
+                    throw new FOPException(
+                      "Don't know what to do with " + args[i]);
                 }
-            }  else if (args[i].equals("-buf")) {
+            } else if (args[i].equals("-buf")) {
                 if (buffermode == NOT_SET) {
                     buffermode = BUFFER_FILE;
                 } else {
@@ -238,7 +243,7 @@ public class CommandLineOptions {
                     i++;
                 }
             } else if (args[i].equals("-at")) {
-               setOutputMode(AREA_OUTPUT);
+                setOutputMode(AREA_OUTPUT);
                 if ((i + 1 == args.length) ||
                         (args[i + 1].charAt(0) == '-')) {
                     throw new FOPException("you must specify the area-tree output file");
@@ -248,62 +253,58 @@ public class CommandLineOptions {
                 }
             } else {
                 printUsage();
-               return false;
-           }
+                return false;
+            }
         }
-       return true;
+        return true;
     } //end parseOptions
 
-    private void setOutputMode(int mode) 
-       throws FOPException
-    {
-       if (outputmode == NOT_SET) {
-           outputmode = mode;
-       } else {
-           throw new FOPException("you can only set one output method");
-       }
+    private void setOutputMode(int mode) throws FOPException {
+        if (outputmode == NOT_SET) {
+            outputmode = mode;
+        } else {
+            throw new FOPException("you can only set one output method");
+        }
     }
-    
 
     /**
      * checks whether all necessary information has been given in a consistent way
      */
-    private void checkSettings ()
-       throws FOPException, FileNotFoundException
-    {
+    private void checkSettings () throws FOPException,
+    FileNotFoundException {
         if (inputmode == NOT_SET) {
-           throw new FOPException("No input file specified");
-       }
+            throw new FOPException("No input file specified");
+        }
 
         if (outputmode == NOT_SET) {
-           throw new FOPException("No output file specified");
-       }
+            throw new FOPException("No output file specified");
+        }
 
         if (inputmode == XSLT_INPUT) {
             //check whether xml *and* xslt file have been set
-           if (xmlfile == null) {
-               throw new FOPException("XML file must be specified for the tranform mode");
-           }
-           if (xsltfile == null) {
-               throw new FOPException("XSLT file must be specified for the tranform mode");
-           }
+            if (xmlfile == null) {
+                throw new FOPException("XML file must be specified for the tranform mode");
+            }
+            if (xsltfile == null) {
+                throw new FOPException("XSLT file must be specified for the tranform mode");
+            }
 
             //warning if fofile has been set in xslt mode
             if (fofile != null) {
                 MessageHandler.errorln(
                   "WARNING: Can't use fo file with transform mode! Ignoring.\n" +
-                  "Your input is "+
-                 "\n xmlfile: " + xmlfile.getAbsolutePath() + 
-                 "\nxsltfile: " + xsltfile.getAbsolutePath() + 
-                 "\n  fofile: " + fofile.getAbsolutePath());
+                  "Your input is "+ "\n xmlfile: " +
+                  xmlfile.getAbsolutePath() + "\nxsltfile: " +
+                  xsltfile.getAbsolutePath() + "\n  fofile: " +
+                  fofile.getAbsolutePath());
             }
             if (!xmlfile.exists()) {
-               throw new FileNotFoundException("xml file " +
-                                               xmlfile.getAbsolutePath() + " not found ");
+                throw new FileNotFoundException("xml file " +
+                                                xmlfile.getAbsolutePath() + " not found ");
             }
             if (!xsltfile.exists()) {
                 throw new FileNotFoundException("xsl file " +
-                                       xsltfile.getAbsolutePath() + " not found ");
+                                                xsltfile.getAbsolutePath() + " not found ");
             }
 
         } else if (inputmode == FO_INPUT) {
@@ -313,14 +314,13 @@ public class CommandLineOptions {
                 MessageHandler.errorln("xslt file: " + xsltfile.toString());
             }
             if (!fofile.exists()) {
-                 throw new FileNotFoundException("fo file " +
-                                       fofile.getAbsolutePath() + " not found ");
+                throw new FileNotFoundException("fo file " +
+                                                fofile.getAbsolutePath() + " not found ");
             }
 
         }
     }// end checkSettings
 
-
     /**
      *  returns the chosen renderer, throws FOPException
      */
@@ -338,19 +338,21 @@ public class CommandLineOptions {
                 return Driver.RENDER_PRINT;
             case PCL_OUTPUT:
                 return Driver.RENDER_PCL;
+            case PS_OUTPUT:
+                return Driver.RENDER_PS;
             case TXT_OUTPUT:
                 return Driver.RENDER_TXT;
-                       case AREA_OUTPUT:
-                               rendererOptions.put("fineDetail", isCoarseAreaXml());
-                               return Driver.RENDER_XML;
+            case AREA_OUTPUT:
+                rendererOptions.put("fineDetail", isCoarseAreaXml());
+                return Driver.RENDER_XML;
             default:
                 throw new FOPException("Invalid Renderer setting!");
         }
     }
 
     /**
-       *
-       **/
+     *
+     **/
     public InputHandler getInputHandler () {
         switch (inputmode) {
             case FO_INPUT:
@@ -362,16 +364,12 @@ public class CommandLineOptions {
         }
     }
 
-       public java.util.Hashtable getRendererOptions() {
-               return rendererOptions;
-       }
-       
-    public Starter getStarter() 
-       throws FOPException
-    {
+    public java.util.Hashtable getRendererOptions() {
+        return rendererOptions;
+    }
+
+    public Starter getStarter() throws FOPException {
         switch (outputmode) {
-            case PDF_OUTPUT:
-                return new CommandLineStarter(this);
             case AWT_OUTPUT:
                 try {
                     return((Starter) Class.forName(
@@ -380,13 +378,11 @@ public class CommandLineOptions {
                              new Class[]{CommandLineOptions.class}).
                            newInstance(new Object[]{this}));
                 } catch (Exception e) {
-                   if (e instanceof FOPException) {
-                       throw (FOPException)e;
-                   }
-                   throw new FOPException("AWTStarter could not be loaded.",e);
+                    if (e instanceof FOPException) {
+                        throw (FOPException) e;
+                    }
+                    throw new FOPException("AWTStarter could not be loaded.",e);
                 }
-            case MIF_OUTPUT:
-                return new CommandLineStarter(this);
             case PRINT_OUTPUT:
                 try {
                     return((Starter) Class.forName(
@@ -395,14 +391,12 @@ public class CommandLineOptions {
                              new Class[]{CommandLineOptions.class}).
                            newInstance(new Object[]{this}));
                 } catch (Exception e) {
-                   if (e instanceof FOPException) {
-                       throw (FOPException)e;
-                   }
-                   throw new FOPException("PrintStarter could not be loaded.",e);
+                    if (e instanceof FOPException) {
+                        throw (FOPException) e;
+                    }
+                    throw new FOPException("PrintStarter could not be loaded.",e);
                 }
 
-            case AREA_OUTPUT:
-                return new CommandLineStarter(this);
             default:
                 return new CommandLineStarter(this);
         }
@@ -440,10 +434,10 @@ public class CommandLineOptions {
         return language;
     }
 
-     public File getBufferFile() {
-                       return bufferFile;
-     }
-     
+    public File getBufferFile() {
+        return bufferFile;
+    }
+
     public Boolean isQuiet() {
         return quiet;
     }
@@ -456,13 +450,13 @@ public class CommandLineOptions {
         return errorDump;
     }
 
-       public Boolean isCoarseAreaXml() {
-               return suppressLowLevelAreas;
-       }
-       
+    public Boolean isCoarseAreaXml() {
+        return suppressLowLevelAreas;
+    }
+
     /**
-       * return either the fofile or the xmlfile
-       */
+     * return either the fofile or the xmlfile
+     */
     public File getInputFile() {
         switch (inputmode) {
             case FO_INPUT:
@@ -474,19 +468,18 @@ public class CommandLineOptions {
         }
     }
 
-
     /**
-       *        shows the commandline syntax including a summary of all available options and some examples
-       */
+     *  shows the commandline syntax including a summary of all available options and some examples
+     */
     public static void printUsage() {
         MessageHandler.errorln(
-          "\nUSAGE\nFop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-txt|-at|-print] <outfile>\n" +
+          "\nUSAGE\nFop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-ps|-txt|-at|-print] <outfile>\n" +
           " [OPTIONS]  \n" + "  -d          debug mode   \n" +
           "  -x          dump configuration settings  \n" +
           "  -q          quiet mode  \n" +
           "  -c cfg.xml  use additional configuration file cfg.xml\n" +
           "  -l lang     the language to use for user information \n" +
-                 "  -s          for area tree XML, down to block areas only\n\n" +
+          "  -s          for area tree XML, down to block areas only\n\n" +
           " [INPUT]  \n" +
           "  infile            xsl:fo input file (the same as the next) \n" +
           "  -fo  infile       xsl:fo input file  \n" +
@@ -498,6 +491,7 @@ public class CommandLineOptions {
           "  -awt              input will be displayed on screen \n" +
           "  -mif outfile      input will be rendered as mif file (outfile req'd)\n" +
           "  -pcl outfile      input will be rendered as pcl file (outfile req'd) \n" +
+          "  -ps outfile       input will be rendered as PostScript file (outfile req'd) \n" +
           "  -txt outfile      input will be rendered as text file (outfile req'd) \n" +
           "  -at outfile       representation of area tree as XML (outfile req'd) \n" +
           "  -print            input file will be rendered and sent to the printer \n" +
@@ -510,8 +504,8 @@ public class CommandLineOptions {
     }
 
     /**
-       *       shows the options for print output
-       */
+     * shows the options for print output
+     */
     public void printUsagePrintOutput() {
         MessageHandler.errorln(
           "USAGE: -print [-Dstart=i] [-Dend=i] [-Dcopies=i] [-Deven=true|false] " +
@@ -521,8 +515,8 @@ public class CommandLineOptions {
 
 
     /**
-       * debug mode. outputs all commandline settings
-       */
+     * debug mode. outputs all commandline settings
+     */
     private void debug () {
         System.out.print("Input mode: ");
         switch (inputmode) {
@@ -574,6 +568,10 @@ public class CommandLineOptions {
                 MessageHandler.logln("pcl");
                 MessageHandler.logln("output file: " + outfile.toString());
                 break;
+            case PS_OUTPUT:
+                MessageHandler.logln("PostScript");
+                MessageHandler.logln("output file: " + outfile.toString());
+                break;
             case TXT_OUTPUT:
                 MessageHandler.logln("txt");
                 MessageHandler.logln("output file: " + outfile.toString());
@@ -611,16 +609,15 @@ public class CommandLineOptions {
     //debug: create class and output all settings
     public static void main (String args[]) {
         /*
-          for (int i = 0; i < args.length; i++) {
-               MessageHandler.logln(">"+args[i]+"<");
-          }*/
-       try {
-           CommandLineOptions options = new CommandLineOptions (args);
-       }
-       catch (Exception e) {
-           e.printStackTrace();
-       }
-       
+           for (int i = 0; i < args.length; i++) {
+             MessageHandler.logln(">"+args[i]+"<");
+           }*/
+        try {
+            CommandLineOptions options = new CommandLineOptions (args);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
         //options.debug();
     }
 }
index c9a48a2429d69a023303cd7182ce9880ba8ea1c7..f3c695369d4ea597b7c546a266d12d79f788a3b5 100644 (file)
@@ -1,10 +1,9 @@
 /* $Id$
  * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
- * For details on use and redistribution please refer to the 
- * LICENSE file included with these sources."
+ * For details on use and redistribution please refer to the
+ * LICENSE file included with these sources.
  */
 
-
 package org.apache.fop.apps;
 
 // FOP
@@ -49,7 +48,7 @@ import java.io.*;
  * Here is an example use of Driver which outputs PDF:
  *
  * <PRE>
- *   Driver driver = new Driver(new InputSource (args[0]), 
+ *   Driver driver = new Driver(new InputSource (args[0]),
  *                              new FileOutputStream(args[1]));
  *   driver.setRenderer(RENDER_PDF);
  *   driver.run();
@@ -88,10 +87,10 @@ import java.io.*;
  * </PRE>
  */
 public class Driver {
-    
+
     /** Render to PDF. OutputStream must be set */
     public static final int RENDER_PDF = 1;
-    
+
     /** Render to a GUI window. No OutputStream neccessary */
     public static final int RENDER_AWT = 2;
 
@@ -100,15 +99,18 @@ public class Driver {
 
     /** Render to XML. OutputStream must be set */
     public static final int RENDER_XML = 4;
-   
+
     /** Render to PRINT. No OutputStream neccessary */
     public static final int RENDER_PRINT = 5;
 
     /** Render to PCL. OutputStream must be set */
     public static final int RENDER_PCL = 6;
 
+    /** Render to Postscript. OutputStream must be set */
+    public static final int RENDER_PS = 7;
+
     /** Render to Text. OutputStream must be set */
-    public static final int RENDER_TXT = 7;
+    public static final int RENDER_TXT = 8;
 
     /** the FO tree builder */
     private FOTreeBuilder _treeBuilder;
@@ -121,13 +123,13 @@ public class Driver {
 
     /** the source of the FO file */
     private InputSource _source;
-    
+
     /** the stream to use to output the results of the renderer */
     private OutputStream _stream;
 
     /** The XML parser to use when building the FO tree */
     private XMLReader _reader;
-    
+
     /** If true, full error stacks are reported */
     private boolean _errorDump = false;
 
@@ -136,36 +138,34 @@ public class Driver {
 
     /** create a new Driver */
     public Driver() {
-       _stream = null;
-       _bufferManager = new BufferManager();
-       _treeBuilder = new FOTreeBuilder();
-       _treeBuilder.setBufferManager(_bufferManager);
-       setupDefaultMappings();
+        _stream = null;
+        _bufferManager = new BufferManager();
+        _treeBuilder = new FOTreeBuilder();
+        _treeBuilder.setBufferManager(_bufferManager);
+        setupDefaultMappings();
     }
 
     public Driver(InputSource source, OutputStream stream) {
-       this();
-       _source = source;
-       _stream = stream;
+        this();
+        _source = source;
+        _stream = stream;
     }
 
     /**
-     * Resets the Driver so it can be reused. Property and element 
+     * Resets the Driver so it can be reused. Property and element
      * mappings are reset to defaults.
      * The output stream is cleared. The renderer is cleared.
      */
-    public synchronized void reset() 
-    {
-       _areaTree = null;
-       _treeBuilder.reset();
+    public synchronized void reset() {
+        _areaTree = null;
+        _treeBuilder.reset();
     }
-    
-    public boolean hasData()
-    {
-       return(_treeBuilder.hasData());
+
+    public boolean hasData() {
+        return(_treeBuilder.hasData());
     }
-    
-    /** 
+
+    /**
      * Set the error dump option
      * @param dump if true, full stacks will be reported to the error log
      */
@@ -184,85 +184,84 @@ public class Driver {
     }
 
     /**
-     * Set the source for the FO document. This can be a normal SAX 
+     * Set the source for the FO document. This can be a normal SAX
      * InputSource, or an DocumentInputSource containing a DOM document.
      * @see DocumentInputSource
      */
-    public void setInputSource(InputSource source) 
-    {
-       _source = source;
+    public void setInputSource(InputSource source) {
+        _source = source;
     }
-    
+
     /**
      * Sets the reader used when reading in the source. If not set,
      * this defaults to a basic SAX parser.
      */
-    public void setXMLReader(XMLReader reader) 
-    {
-       _reader = reader;
+    public void setXMLReader(XMLReader reader) {
+        _reader = reader;
     }
-    
+
 
     /**
      * Sets all the element and property list mappings to their default values.
      *
      */
-    public void setupDefaultMappings() 
-    {
-       addElementMapping("org.apache.fop.fo.StandardElementMapping");
-       addPropertyList  ("org.apache.fop.fo.StandardPropertyListMapping");
+    public void setupDefaultMappings() {
+        addElementMapping("org.apache.fop.fo.StandardElementMapping");
+        addPropertyList ("org.apache.fop.fo.StandardPropertyListMapping");
 
-       addElementMapping("org.apache.fop.svg.SVGElementMapping");
-       addPropertyList  ("org.apache.fop.svg.SVGPropertyListMapping");
+        addElementMapping("org.apache.fop.svg.SVGElementMapping");
+        addPropertyList ("org.apache.fop.svg.SVGPropertyListMapping");
 
         addElementMapping("org.apache.fop.extensions.ExtensionElementMapping");
-       addPropertyList  ("org.apache.fop.extensions.ExtensionPropertyListMapping");
+        addPropertyList ("org.apache.fop.extensions.ExtensionPropertyListMapping");
     }
 
     /**
-     * Set the rendering type to use. Must be one of 
+     * Set the rendering type to use. Must be one of
      * <ul>
      *   <li>RENDER_PDF
      *   <li>RENDER_AWT
      *   <li>RENDER_MIF
      *   <li>RENDER_XML
      *   <li>RENDER_PCL
+     *   <li>RENDER_PS
      *   <li>RENDER_TXT
      * </ul>
      * @param renderer the type of renderer to use
      */
-    public void setRenderer(int renderer) 
-       throws IllegalArgumentException
-    {
-       switch (renderer) {
-       case RENDER_PDF:
-           setRenderer(new org.apache.fop.render.pdf.PDFRenderer());
-           break;
-       case RENDER_AWT:
-           throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT");
-       case RENDER_PRINT:
-           throw new IllegalArgumentException("Use renderer form of setRenderer() for PRINT");
-    case RENDER_PCL:
-        setRenderer(new org.apache.fop.render.pcl.PCLRenderer());
-        break;
-    case RENDER_TXT:
-        setRenderer(new org.apache.fop.render.txt.TXTRenderer());
-               break;
-       case RENDER_MIF:
-           setRenderer(new org.apache.fop.render.mif.MIFRenderer());
-           break;
-       case RENDER_XML:
-           setRenderer(new org.apache.fop.render.xml.XMLRenderer());
-           break;
-       default:
-           throw new IllegalArgumentException("Unknown renderer type");
-       }
-       
+    public void setRenderer(int renderer) throws IllegalArgumentException {
+        switch (renderer) {
+            case RENDER_PDF:
+                setRenderer(new org.apache.fop.render.pdf.PDFRenderer());
+                break;
+            case RENDER_AWT:
+                throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT");
+            case RENDER_PRINT:
+                throw new IllegalArgumentException("Use renderer form of setRenderer() for PRINT");
+            case RENDER_PCL:
+                setRenderer(new org.apache.fop.render.pcl.PCLRenderer());
+                break;
+            case RENDER_PS:
+                setRenderer(new org.apache.fop.render.ps.PSRenderer());
+                break;
+            case RENDER_TXT:
+                setRenderer(new org.apache.fop.render.txt.TXTRenderer());
+                break;
+            case RENDER_MIF:
+                setRenderer(new org.apache.fop.render.mif.MIFRenderer());
+                break;
+            case RENDER_XML:
+                setRenderer(new org.apache.fop.render.xml.XMLRenderer());
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown renderer type");
+        }
+
     }
-    
 
-    /** 
-     * Set the Renderer to use 
+
+    /**
+     * Set the Renderer to use
      * @param renderer the renderer instance to use
      */
     public void setRenderer(Renderer renderer) {
@@ -278,36 +277,35 @@ public class Driver {
      * @see #setRenderer(int)
      * @see #setRenderer(Renderer)
      */
-    public void setRenderer(String rendererClassName, String version) 
-    {
-       setRenderer(rendererClassName);
+    public void setRenderer(String rendererClassName, String version) {
+        setRenderer(rendererClassName);
     }
-    
+
     /**
      * Set the class name of the Renderer to use as well as the
      * producer string for those renderers that can make use of it.
-     * @param rendererClassName classname of the renderer to use such as 
+     * @param rendererClassName classname of the renderer to use such as
      * "org.apache.fop.render.pdf.PDFRenderer"
      * @exception IllegalArgumentException if the classname was invalid.
      * @see #setRenderer(int)
      */
-    public void setRenderer(String rendererClassName) 
-       throws IllegalArgumentException
-    {
-       try {
-           _renderer = (Renderer) Class.forName(rendererClassName).newInstance();
-           _renderer.setProducer(Version.getVersion());
-       }
-       catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Could not find " + 
-                                              rendererClassName);
+    public void setRenderer(String rendererClassName)
+    throws IllegalArgumentException {
+        try {
+            _renderer = (Renderer) Class.forName(
+                          rendererClassName).newInstance();
+            _renderer.setProducer(Version.getVersion());
+        } catch (ClassNotFoundException e) {
+            throw new IllegalArgumentException("Could not find " +
+                                               rendererClassName);
         }
         catch (InstantiationException e) {
-            throw new IllegalArgumentException("Could not instantiate " +
-                                   rendererClassName);
+            throw new IllegalArgumentException(
+              "Could not instantiate " + rendererClassName);
         }
         catch (IllegalAccessException e) {
-            throw new IllegalArgumentException("Could not access " + rendererClassName);
+            throw new IllegalArgumentException("Could not access " +
+                                               rendererClassName);
         }
         catch (ClassCastException e) {
             throw new IllegalArgumentException(rendererClassName + " is not a renderer");
@@ -321,67 +319,68 @@ public class Driver {
      * @param mapping the element mappingto add
      */
     public void addElementMapping(ElementMapping mapping) {
-       mapping.addToBuilder(_treeBuilder);
+        mapping.addToBuilder(_treeBuilder);
     }
 
     /**
      * add the element mapping with the given class name
      */
-    public void addElementMapping(String mappingClassName) 
-       throws IllegalArgumentException
-    {
-       try {
+    public void addElementMapping(String mappingClassName)
+    throws IllegalArgumentException {
+        try {
             ElementMapping mapping = (ElementMapping) Class.forName(
-                     mappingClassName).newInstance();
-           addElementMapping(mapping);
-       } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Could not find " + mappingClassName);
-       }
+                                       mappingClassName).newInstance();
+            addElementMapping(mapping);
+        } catch (ClassNotFoundException e) {
+            throw new IllegalArgumentException("Could not find " +
+                                               mappingClassName);
+        }
         catch (InstantiationException e) {
-            throw new IllegalArgumentException("Could not instantiate " +
-                                   mappingClassName);
-       }
+            throw new IllegalArgumentException(
+              "Could not instantiate " + mappingClassName);
+        }
         catch (IllegalAccessException e) {
-            throw new IllegalArgumentException("Could not access " + mappingClassName);
-       }
+            throw new IllegalArgumentException("Could not access " +
+                                               mappingClassName);
+        }
         catch (ClassCastException e) {
             throw new IllegalArgumentException(mappingClassName + " is not an ElementMapping");
-       }
+        }
     }
 
     /**
      * Add the PropertyListMapping.
      */
-    public void addPropertyList(PropertyListMapping mapping) 
-    {
-       mapping.addToBuilder(_treeBuilder);
+    public void addPropertyList(PropertyListMapping mapping) {
+        mapping.addToBuilder(_treeBuilder);
     }
-    
 
     /**
      * Add the PropertyListMapping with the given class name.
      */
-    public void addPropertyList(String listClassName) 
-       throws IllegalArgumentException
-    {
-       try {
-            PropertyListMapping mapping = (PropertyListMapping) Class.forName(
-                     listClassName).newInstance();
-           addPropertyList(mapping);
-           
-       } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException("Could not find " + listClassName);
-       }
+    public void addPropertyList(String listClassName)
+    throws IllegalArgumentException {
+        try {
+            PropertyListMapping mapping =
+              (PropertyListMapping) Class.forName(
+                listClassName).newInstance();
+            addPropertyList(mapping);
+
+        } catch (ClassNotFoundException e) {
+            throw new IllegalArgumentException("Could not find " +
+                                               listClassName);
+        }
         catch (InstantiationException e) {
-            throw new IllegalArgumentException("Could not instantiate " +
-                                              listClassName);
-       }
+            throw new IllegalArgumentException(
+              "Could not instantiate " + listClassName);
+        }
         catch (IllegalAccessException e) {
-            throw new IllegalArgumentException("Could not access " + listClassName);
-       }
+            throw new IllegalArgumentException("Could not access " +
+                                               listClassName);
+        }
         catch (ClassCastException e) {
             throw new IllegalArgumentException(listClassName + " is not an ElementMapping");
-       }
+        }
     }
 
     /**
@@ -400,9 +399,8 @@ public class Driver {
      * SAX InputSource
      */
     public synchronized void buildFOTree(XMLReader parser,
-                            InputSource source)
-       throws FOPException 
-    {
+                                         InputSource source)
+        throws FOPException {
 
         parser.setContentHandler(_treeBuilder);
         try {
@@ -422,21 +420,21 @@ public class Driver {
     /**
      * Build the formatting object tree using the given DOM Document
      */
-    public synchronized void buildFOTree(Document document) 
-       throws FOPException 
-    {
-       try {
-           DocumentInputSource source = new DocumentInputSource(document);
-           DocumentReader reader = new DocumentReader();
-           reader.setContentHandler(_treeBuilder);
-           reader.parse(source);
-       } catch (SAXException e) {
+    public synchronized void buildFOTree(Document document)
+        throws FOPException {
+        try {
+            DocumentInputSource source = new DocumentInputSource(document);
+            DocumentReader reader = new DocumentReader();
+            reader.setContentHandler(_treeBuilder);
+            reader.parse(source);
+        } catch (SAXException e) {
             throw new FOPException(e);
-       } catch (IOException e) {
+        }
+        catch (IOException e) {
             throw new FOPException(e);
-       }
-       
-    } 
+        }
+
+    }
 
     /**
      * Dumps an error
@@ -448,29 +446,28 @@ public class Driver {
                 if (((SAXException) e).getException() != null) {
                     ((SAXException) e).getException().printStackTrace();
                 }
-            }
-            else if (e instanceof FOPException) {
+            } else if (e instanceof FOPException) {
                 e.printStackTrace();
                 if (((FOPException) e).getException() != null) {
                     ((FOPException) e).getException().printStackTrace();
                 }
-            }
-           else {
+            } else {
                 e.printStackTrace();
             }
         }
     }
 
     /* Set up the system buffers */
-   
+
     public void setBufferFile(File bufferFile) {
-       this._bufferManager.addBufferFile(bufferFile);
+        this._bufferManager.addBufferFile(bufferFile);
     }
-    
+
     /**
      * format the formatting object tree into an area tree
      */
-    public synchronized void format() throws FOPException {
+    public synchronized void format()
+        throws FOPException {
         FontInfo fontInfo = new FontInfo();
         _renderer.setupFontInfo(fontInfo);
 
@@ -483,7 +480,8 @@ public class Driver {
     /**
      * render the area tree to the output form
      */
-    public synchronized void render() throws IOException, FOPException {
+    public synchronized void render()
+        throws IOException, FOPException {
         _renderer.render(_areaTree, _stream);
     }
 
@@ -492,27 +490,25 @@ public class Driver {
      * inputsource and outputstream
      */
     public synchronized void run()
-       throws IOException, FOPException 
-    {
-       if (_renderer == null) {
-           setRenderer(RENDER_PDF);
-       }
-       if (_source == null) {
-           throw new FOPException("InputSource is not set.");
-       }
-       if (_reader == null) {
-           if (!(_source instanceof DocumentInputSource)) {
-               _reader = ConfigurationReader.createParser();
-           }
-       }
-       if (_source instanceof DocumentInputSource) {
-           buildFOTree(((DocumentInputSource)_source).getDocument());
-       }
-       else {
-           buildFOTree(_reader, _source);
-       }
-       format();
-       render();
+        throws IOException, FOPException {
+        if (_renderer == null) {
+            setRenderer(RENDER_PDF);
+        }
+        if (_source == null) {
+            throw new FOPException("InputSource is not set.");
+        }
+        if (_reader == null) {
+            if (!(_source instanceof DocumentInputSource)) {
+                _reader = ConfigurationReader.createParser();
+            }
+        }
+        if (_source instanceof DocumentInputSource) {
+            buildFOTree(((DocumentInputSource)_source).getDocument());
+        } else {
+            buildFOTree(_reader, _source);
+        }
+        format();
+        render();
     }
-    
+
 }