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: [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
