- From: Erik Melkersson <melker@unit.liu.se>
- Date: Fri, 05 Oct 2001 09:03:55 +0200
- To: www-xsl-fo@w3.org
Yes thanks it does do the trick! Which was my main problem. But wouldn't it be more efficient to use the DOM tree directly instead of transforming it to a string first? (But fop doesn't seen to handle this kind of input correct or what?) Regards /Erik Melkersson Magnus Sjöberg wrote: > > The following example will do the trick. > > Rgds/// > Magnus Sjöberg > > // Small example > DocumentBuilderFactory dbf = > DocumentBuilderFactory.newInstance(); > DocumentBuilder db = dbf.newDocumentBuilder(); > Document doc = db.parse(FoFilename); > DOMSource fosource; > Serializer serializer = > SerializerFactory.getSerializer(OutputProperties.getDefaultMethodProperties("xml")); > ByteArrayOutputStream bos = new ByteArrayOutputStream(); > CharArrayWriter caw = new CharArrayWriter(); > InputSource is; > > // Add changes to doc > ... > > // Get source tree > fosource = new DOMSource(doc); > > // Create input source > serializer.setWriter(caw); > serializer.asDOMSerializer().serialize(fosource.getNode()); > is = new InputSource(new StringReader(caw.toString())); > > Driver driver2 = new Driver(is, bos); > driver2.setRenderer(Driver.RENDER_PDF); > driver2.run(); > > // Result is in 'bos' > > Erik Melkersson wrote: > > > > Hi! > > > > I would like to read a fo file to a DOM tree on startup. > > Do some changes to it on runtime and then produce pdf and ps from it. > > > > I am using version 0.20.1 of fop. > > > > My try: > > > > --- > > // Fetch xml -> dom tree > > DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); > > DocumentBuilder docBuilder = dbf.newDocumentBuilder(); > > Document doc = docBuilder.parse(FOfilename); > > > > //... some changes to the DOM tree shall be done here (but I aint doing > > any changes yet > > > > Driver driver = new Driver(); > > driver.setRenderer(Driver.RENDER_PDF); > > driver.setOutputStream(new FileOutputStream()); > > > > driver.render(doc); // -> returns fault, se below > > > > //driver.setInputSource(new DocumentInputSource(doc)); > > // -> gives the same fault > > > > /* > > //This works (but it doesn't use the preparsed dom tree > > driver.setInputSource(new InputSource(aPDFfilename)); > > driver.run(); > > */ > > --- > > > > The error I get is: > > java.lang.NullPointerException > > at java.util.Hashtable.get(Hashtable.java:320) > > at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:191) > > at org.apache.fop.tools.DocumentReader.parse(DocumentReader.java:444) > > at org.apache.fop.apps.Driver.render(Driver.java:449) > > at Avi.main(Avi.java:61) (my file) > > > > I can only find old examples where a method Driver.format() is used... > > and they does not use dom trees as indata. > > > > Thankful for any help! > > > > > > __________________________ > > Erik Melkersson, UNIT > > melker@unit.liu.se, 013-285794 > > http://www.unit.liu.se/ -- __________________________ Erik Melkersson, UNIT melker@unit.liu.se, 013-285794 http://www.unit.liu.se/
Received on Friday, 5 October 2001 03:04:26 UTC