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]