On Tue, 2005-02-08 at 14:46 -0500, Assia Aouat wrote: > Do you have an example?
This is part of a class that deals with all kinds of output, but this method is specifically for OpenOffice. fullPath is a class variable representing the template name. In answer to a previous question - no its not that difficult, however it is astonishingly useful for creating documents. It is however limited, as when editing the documents you can't put velocity between XML tags. In some cases we have manually modified the content.xml in order to get certain effects in velocity. ------- public void ooStyle( OutputStream out ) { final int BUFSIZE = 4096; try { ZipFile zipin = new ZipFile( fullPath ); ZipOutputStream zipout = new ZipOutputStream( out ); Enumeration all = zipin.entries(); byte[] b = new byte[BUFSIZE]; while( all.hasMoreElements() ) { ZipEntry entry = (ZipEntry) all.nextElement(); // Copy from one to the other ZipEntry newEntry = new ZipEntry( entry.getName() ); zipout.putNextEntry( newEntry ); InputStream is = new BufferedInputStream( zipin.getInputStream( entry ), BUFSIZE ); if( "content.xml".equals( entry.getName() ) ) { // Velocity Reader reader = new InputStreamReader( is ); Writer writer = new OutputStreamWriter( zipout, "ISO-8859-1" ); try { Velocity.evaluate( context, writer, "ERROR:", reader); } catch ( MethodInvocationException e ) { e.printStackTrace( ); } catch ( ParseErrorException e ) { e.printStackTrace( ); } catch ( ResourceNotFoundException e ) { e.printStackTrace( ); } writer.flush(); } else { // Simple Copy - No Velocity int n=0; while ( (n = is.read(b)) > 0 ) { zipout.write( b, 0, n); } } zipout.closeEntry(); } zipout.finish(); } catch ( IOException e ) { e.printStackTrace( ); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]