The following code draws into an SVGGraphics2D, takes the resulting Document, and attempts to transcode it. --------------------------------------------- import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Graphics2D; import java.awt.Color;
import java.io.ByteArrayOutputStream; import java.io.Writer; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.IOException; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.batik.dom.GenericDOMImplementation; import org.apache.batik.dom.svg.SVGDOMImplementation; import org.apache.batik.transcoder.image.JPEGTranscoder; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.w3c.dom.Document; import org.w3c.dom.DOMImplementation; import org.w3c.dom.svg.SVGDocument; public class TestDOM { public void paint(Graphics2D g2d) { g2d.setColor(Color.red); g2d.draw(new Rectangle(10, 10, 50, 50) ); g2d.setColor(Color.green); g2d.fill(new Rectangle(30, 30, 50, 50) ); } public static void main(String [] args) throws IOException { DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation(); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; Document document = domImpl.createDocument(svgNS, "svg", null); // Create an instance of the SVG Generator SVGGraphics2D svgGenerator = new SVGGraphics2D(document); svgGenerator.setSVGCanvasSize(new Dimension(210,210)); // Ask to render into the SVG Graphics2D implementation TestDOM test = new TestDOM(); test.paint(svgGenerator); // Stream out SVG to the standard output using UTF-8 // character to byte encoding boolean useCSS = true; // we want to use CSS style attribute ByteArrayOutputStream baos = new ByteArrayOutputStream( 8192 ); Writer out = new OutputStreamWriter(baos, "UTF-8"); svgGenerator.stream(out, useCSS); System.out.println( baos.toString() ); // Now try to transcode the document try { JPEGTranscoder t = new JPEGTranscoder(); t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(.8)); TranscoderInput input = new TranscoderInput( document ); OutputStream ostream = new FileOutputStream("out.jpg"); TranscoderOutput output = new TranscoderOutput(ostream); t.transcode(input, output); ostream.flush(); ostream.close(); } catch (Exception e) { e.printStackTrace(); } System.exit(0); } } ------------------------------------------------ Here's the resultant error. I'm using Batik 1.1.1 on Linux. What, oh, what, am I doing wrong? --------------------------- org.apache.batik.transcoder.TranscoderException: null Enclosed Exception: null at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:262) at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:126) at TestDOM.main(TestDOM.java:74) --------------------------- -- J. David Eisenberg http://catcode.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]