# Wie kann ich aus ein Document-Tree ein PDF generieren



## MathiasKen (9. Feb 2007)

Hallo,

Wie kann ich aus ein Document-Tree ein PDF generieren ohne das Documment-Object in File-System zu speichern.
also statt ich xml-File möchte ich ein org.dom4j.Document übergeben.  


```
public void convertXML2PDF(File xml, File xslt, File pdf) 
                throws IOException, FOPException, TransformerException {
        //Construct driver
        Driver driver = new Driver();
        
        //Setup logger
        Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
        driver.setLogger(logger);
        MessageHandler.setScreenLogger(logger);

        //Setup Renderer (output format)        
        driver.setRenderer(Driver.RENDER_PDF);
        
        //Setup output
        OutputStream out = new java.io.FileOutputStream(pdf);
        try {
            driver.setOutputStream(out);

            //Setup XSLT
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(new StreamSource(xslt));
        
            //Setup input for XSLT transformation
            Source src = new StreamSource(xml);
        
            //Resulting SAX events (the generated FO) must be piped through to FOP
            Result res = new SAXResult(driver.getContentHandler());

            //Start XSLT transformation and FOP processing
            transformer.transform(src, res);
        } finally {
            out.close();
        }
    }
```

Hat jemand ein Idee? Danke

cu


----------



## Sven (19. Feb 2007)

Vielleicht mit 

```
DOMSource xmlSource = new DOMSource(xmlDocument);
```
Sven[/code]


----------



## SnooP (23. Feb 2007)

Kannst du nicht mit dem XMLWriter wieder nen Ausgabestream erstellen, den du dann als eingabe für den transformer nutzen kannst?

Welche Version von FOP nutzt du denn eigentlich by the way? ich hab nämlich mit der current-version Probleme mit dem Beispiel, weil ich Driver nicht mehr finde... - hab das dann über nen anderen Weg erledigen lassen...


----------

