Hi,
Im trying to write a little app that uses the rasterizer to convert an SVG to a PNG. Obviously this is exactly what batik-rasterizer.jar does, however I want to be able to write a servlet and import org.apache.batik.apps.rasterizer.*, and then be able to rasterize the file on the fly.
You can just use the rasterizer class directly. That way you have more direct control.
Here is a code sample from a servlet rasterizing SVG to PNG (http://cvs.berlios.de/cgi-bin/viewcvs.cgi/digilib/servlet/src/digilib/servlet/Raster.java?rev=HEAD&content-type=text/vnd.viewcvs-markup):
// read the document SVGDocument doc = docFactory.createSVGDocument( fileToLoad.getFile().toURI().toString()); // extract the SVG root SVGSVGElement svgroot = doc.getRootElement(); // get document width and height float imgWidth = svgroot.getWidth().getBaseVal().getValue(); float imgHeight = svgroot.getHeight().getBaseVal().getValue();
/* * set up the transcoder */
// create a PNG transcoder PNGTranscoder transcoder = new PNGTranscoder(); // create the transcoder input //InputStream is = new FileInputStream(fileToLoad.getFile()); TranscoderInput input = new TranscoderInput(doc); logger.info("Loading: " + fileToLoad.getFile()); // create the transcoder output TranscoderOutput output = new TranscoderOutput(response.getOutputStream()); // output is image/png response.setContentType("image/png");
// area of interest Rectangle2D aoi = new Rectangle2D.Double( paramWX * imgWidth, paramWY * imgHeight, paramWW * imgWidth, paramWH * imgHeight); transcoder.addTranscodingHint(PNGTranscoder.KEY_AOI, aoi);
// destination image dimensions if (paramDW > 0) { transcoder.addTranscodingHint( PNGTranscoder.KEY_WIDTH, new Float(paramDW)); } if (paramDH > 0) { transcoder.addTranscodingHint( PNGTranscoder.KEY_HEIGHT, new Float(paramDH)); }
/* * transcode */
transcoder.transcode(input, output);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]