Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java
Expertise: Advanced
Mar 4, 2008

Passing SAX Events to a FOP Processor

This tip shows a Java application that can be used to pass SAX events to a FOP processor. It uses the javax.xml.parsers.SAXParser class:

In demo document:  C:\Data_Local\xml\docs\AirWings_fop.fo
Out demo document: C:\Data_Local\xml\docs\AirWings_pdf_sax.pdf
*/

//FOP
import org.apache.fop.apps.Driver; 
import org.apache.fop.messaging.MessageHandler;

//Avalon
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.logger.ConsoleLogger;

//Java
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;

public class SAX_FOP{       
   public static void main(String[] args){    
     
   OutputStream OS_pdf=null;

   try{
      //create an org.apache.fop.apps.Driver object
      Driver fop=new Driver();
        
      //setting a logger
      Logger logger=new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
      fop.setLogger(logger);
      MessageHandler.setOutputMethod(MessageHandler.SCREEN);
      MessageHandler.setScreenLogger(logger); 
     
      //setting renderer
      fop.setRenderer(Driver.RENDER_PDF);         
                                
   try{
      //setting the out stream
      File F_pdf=new File("C://Data_Local//  
                           xml//docs//AirWings_pdf_sax.pdf");
      OS_pdf=new FileOutputStream(F_pdf);   
      fop.setOutputStream(OS_pdf);
      }catch(java.io.FileNotFoundException e)
         {MessageHandler.error("[***   "+e.getMessage()+"  ***]");}
        
      //get a ContentHandler
      ContentHandler CH=fop.getContentHandler();

      //get a SAXParserFactory object
      SAXParserFactory SAXpf=SAXParserFactory.newInstance();
                      
      //namespace activation             
     if(SAXpf.isNamespaceAware()==false)
                 SAXpf.setNamespaceAware(true);

      //get a SAXParser object
      SAXParser SAXp=SAXpf.newSAXParser();                      
                    
      //call a SAXParser.parse method
      SAXp.parse("C://Data_Local//xml//docs//AirWings_fop.fo",                
                  (DefaultHandler)(CH));
      }catch(SAXException e)
         {System.out.println(e.getMessage());
      }catch(ParserConfigurationException e)    
         {System.out.println(e.getMessage());
      }catch(IOException e)
         {System.out.println(e.getMessage());}    
     }  
}
Leonard Anghel
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date