Thanks for spotting that one. I've just fixed it in Subversion: http://svn.apache.org/viewcvs?rev=354537&view=rev
On 04.12.2005 15:35:50 Amin Ahmad wrote: > Hi Team FOP, > > I was playing around with the PNG Renderer, and I think I noticed a problem > -- when it produces multiple files (one per page) it does not appear to be > explicity closing the files it creates. Java GC takes care of closing the > files automatically, but, running Java 5, the final file is left open until > the JVM terminates. > > In the code below from PNGRenderer, on the last line of the for loop, the > output stream is flushed but never closed. At the top of the loop, os is > reassigned to a new output stream for the next page. > > thanks, > Amin > > > public void stopRenderer() throws IOException { > > super.stopRenderer(); > > for (int i = 0; i < pageViewportList.size(); i++) { > > OutputStream os = getCurrentOutputStream(i); > if (os == null) { > log.warn("No filename information available." > + " Stopping early after the first page."); > break; > } > // Do the rendering: get the image for this page > RenderedImage image = (RenderedImage) > getPageImage((PageViewport) pageViewportList > .get(i)); > > // Encode this image > log.debug("Encoding page " + (i + 1)); > renderParams = PNGEncodeParam.getDefaultEncodeParam(image); > > // Set resolution > float pixSzMM = userAgent.getPixelUnitToMillimeter(); > // num Pixs in 1 Meter > int numPix = (int)((1000 / pixSzMM) + 0.5); > renderParams.setPhysicalDimension(numPix, numPix, 1); // 1 means > 'pix/meter' > > // Encode PNG image > PNGImageEncoder encoder = new PNGImageEncoder(os, renderParams); > encoder.encode(image); > os.flush(); > } > } Jeremias Maerki