ok I was able to find the jar 0.204 and run it successfully however it runs out 
of memory ..,anyone be kind enough to share a working example within apache fop 
1.0.0 to convert html to PDF?
Am I missing something here?


Kapil Garg
 




From: gargka...@hotmail.com
To: fop-...@xml.apache.org
Subject: HTML to PDF :NoSuchMEthod Erros on 
callingorg.apache.fop.fo.FOTreeBuilder in Driver class
Date: Sun, 22 May 2011 05:05:31 +1000









Hello GuysBit new on Apache FOP. I am trying to run a demo code to convert HTML 
into PDF. I am getting following exception on using fop 0.20.5 versionI could 
not find the driver class in fop 1.0.0 version.IS there  a sample code that 
converts html into pdf in FOP 1.0.0 version. I need urgently some sort of HTML 
to PDF conversion library. Am I missing here? Would FOP work for HTML to PDF 
conversion? Any help would be appreciated.

Exception in thread "main" java.lang.NoSuchMethodError: 
org.apache.fop.fo.FOTreeBuilder: method <init>()V not found     at 
org.apache.fop.apps.Driver.<init>(Driver.java:221)   at 
org.apache.fop.apps.Driver.<init>(Driver.java:226)   at 
com.smartbin.smartbinpdf.Html2Pdf.fo2PDF(Html2Pdf.java:135)  at 
com.smartbin.smartbinpdf.Html2Pdf.main(Html2Pdf.java:61)
This is my codepackage com.smartbin.smartbinpdf;import 
java.io.FileInputStream;import java.io.File;import 
java.io.FileNotFoundException;import java.io.FileOutputStream;import 
java.io.IOException;import java.io.OutputStream;import 
java.io.ByteArrayOutputStream;import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder;import 
javax.xml.parsers.DocumentBuilderFactory;import 
javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;import 
javax.xml.transform.dom.DOMSource;
import org.w3c.tidy.Tidy;import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.apache.fop.apps.Driver;import 
org.apache.fop.messaging.MessageHandler;import 
org.apache.fop.tools.DocumentInputSource;
import org.apache.avalon.framework.logger.ConsoleLogger;import 
org.apache.avalon.framework.logger.Logger;
/* *  Class that converts HTML to PDF using *  the DOM interfaces of JTidy, 
Xalan, and FOP. * *  @author Kapil Garg *  */public class Html2Pdf {

    public static void main(String[] args) {        FileInputStream input = 
null;       try {            // open file            //if (args.length != 2) {  
          //   System.out.println("Usage: Html2Pdf htmlFile styleSheet");       
     //  System.exit(1);            //}            //String htmlFileName = 
args[0];            String htmlFileName = 
"C:/fop-1.0/examples/html2pdf/hello.html";            //try {      input = new 
FileInputStream(htmlFileName);            Tidy tidy = new Tidy();            
//Document xmlDoc = tidy.parseDOM(input, null);            Document xmlDoc = 
tidy.parseDOM(input, null) ;            String stylesheet 
="C:/fop-1.0/examples/html2pdf/xhtml2fo.xsl";            Document foDoc = 
xml2FO(xmlDoc, stylesheet);            String pdfFileName = 
htmlFileName.substring(0, htmlFileName.indexOf(".")) + ".pdf";            try { 
               OutputStream pdf = new FileOutputStream(new File(pdfFileName));  
              pdf.write(fo2PDF(foDoc));            }            catch 
(java.io.FileNotFoundException e) {                System.out.println("Error 
creating PDF: " + pdfFileName);            }            catch 
(java.io.IOException e) {                System.out.println("Error writing PDF: 
" + pdfFileName);            }               }

                catch (FileNotFoundException ex) {              
java.util.logging.Logger.getLogger(Html2Pdf.class.getName()).log(Level.SEVERE, 
null, ex);       } finally {            try {                input.close();     
       } catch (IOException ex) {                
java.util.logging.Logger.getLogger(Html2Pdf.class.getName()).log(Level.SEVERE, 
null, ex);            }        }
            }

    /*     *  Applies stylesheet to input.     *     *  @param xml  The xml 
input Document     *       *  @param stylesheet Name of the stylesheet     *    
 *  @return Document  Result of the transform     */    private static Document 
xml2FO(Document xml, String styleSheet) {
        DOMSource xmlDomSource = new DOMSource(xml);            DOMResult 
domResult = new DOMResult();
        Transformer transformer = getTransformer(styleSheet);           if 
(transformer == null) {          System.out.println("Error creating transformer 
for " + styleSheet);     System.exit(1);     }       try {       
transformer.transform(xmlDomSource, domResult);     }       catch 
(javax.xml.transform.TransformerException e) {        return null;        }     
  return (Document) domResult.getNode();
    }

    /*     *  Apply FOP to XSL-FO input     *     *  @param foDocument  The 
XSL-FO input     *       *  @return byte[]  PDF result     */    private static 
byte[] fo2PDF(Document foDocument) {
        DocumentInputSource fopInputSource = new DocumentInputSource(           
                                              foDocument);
        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();            
Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
            Driver driver = new Driver(fopInputSource, out);            
driver.setLogger(log);            driver.setRenderer(Driver.RENDER_PDF);        
    driver.run();
            return out.toByteArray();
        } catch (Exception ex) {            return null;        }    }

    /*     *  Create and return a Transformer for the specified stylesheet.     
*       *  Based on the DOM2DOM.java example in the Xalan distribution.     */  
  private static Transformer getTransformer(String styleSheet) {
        try {
            TransformerFactory tFactory = TransformerFactory.newInstance();
            DocumentBuilderFactory dFactory = 
DocumentBuilderFactory.newInstance();
            dFactory.setNamespaceAware(true);               DocumentBuilder 
dBuilder = dFactory.newDocumentBuilder();       Document xslDoc = 
dBuilder.parse(styleSheet);           DOMSource xslDomSource = new 
DOMSource(xslDoc);
            return tFactory.newTransformer(xslDomSource);
        }       catch (javax.xml.transform.TransformerException e) {        
e.printStackTrace();            return null;        }       catch 
(java.io.IOException e) {     e.printStackTrace();            return null;      
  }       catch (javax.xml.parsers.ParserConfigurationException e) {          
e.printStackTrace();            return null;        }       catch 
(org.xml.sax.SAXException e) {                e.printStackTrace();            
return null;        }
    }
}



Kapil Garg
 


                                          

Reply via email to