Can some one please throw light as why the Driver class is missing in version 
1.0.0. I used version.2.03 but then it has "init" method missing for 
FOPTreeBuilder.
O just simply want to convert HTML into PDF. I believe there has to be a way 
within Apache Fop to do this ? Am I wrong?

Which version of FOP supports HTML to PDF conversion? IS there a way one can 
convert html into a .fo file or XML and  then FOPFOtpPDF or FopXMLToPDF?
HOw does one proceed on just html page being the input for which PDf needs ot 
be created? IS there any provision for this html to PDf conversion?Is there  a 
sample code in any of the versions of FOP which converts HTML page into a 
PDF? Even if it is not in the example I can use a Java class if at all it is 
present in any of the FOP versions.
Is this something out of scope for FOP?>


Kapil Garg
 




From: [email protected]
To: [email protected]
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