xmlgraphics-fop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kapil garg <gargka...@hotmail.com>
Subject any HTML to PDF example within apache FOP?
Date Sat, 21 May 2011 20:51:24 GMT

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: gargkapil@hotmail.com
To: fop-dev@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
 


 		 	   		  
Mime
View raw message