package audit.util;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;
import org.apache.fop.messaging.MessageHandler;
import org.xml.sax.InputSource;

public class ApachePDFProducer 
{
  public static void convertFO2PDF(File fo, 
                                   File pdf) 
              throws IOException, 
                     FOPException 
  {        
    //Construct driver
    Driver driver = new Driver();    
    //Setup logger
    Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
    driver.setLogger(logger);
    MessageHandler.setScreenLogger(logger);

    //Setup Renderer (output format)        
    driver.setRenderer(Driver.RENDER_PDF);
    
    //Setup output
    OutputStream out = new java.io.FileOutputStream(pdf);
    try 
    {
      driver.setOutputStream(out);
      //Setup input
      InputStream in = new java.io.FileInputStream(fo);
      try 
      {
        driver.setInputSource(new InputSource(in));
        //Process FO
        driver.run();
      } 
      finally 
      {
        in.close();
      }
    } 
    finally 
    {
      out.close();
    }
  }

  /**
   * 
   * @param args
   */
  public static void main(String[] args)
  {
    if (args.length != 1)
    {
      System.err.println("I need the fo-file as first parameter!");
      System.exit(1);
    }
    try
    {
      File file = new File(args[0]);
      convertFO2PDF(file, new File("audit.pdf"));
    }
    catch (Exception ex)
    {
      ex.printStackTrace();
    }
    System.out.println("Done");
  }
}
E-mail this page
Printer View Printer View