The following code prints correct-looking svg to stdout, but the resulting png
file is invalid (just a black rectangle in PaintShop Pro; Netscape says it
contains errors):

package imagingtest;

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.svggen.SVGGraphics2D;
import org.apache.batik.dom.GenericDOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.svg.*;
import org.w3c.dom.DOMImplementation;
import org.apache.batik.svggen.*;
import org.apache.batik.transcoder.*;

import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.util.XMLResourceDescriptor;


public class ImagingTest
{
  public ImagingTest()
  {
  }

  public static void main( String[] args )
  {
    // Draw the image into an SVGGraphics2D.
    // Get a DOMImplementation
    DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
    String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;

    // Create an instance of org.w3c.dom.Document
    SVGDocument document = (SVGDocument)impl.createDocument(svgNS, "svg",
null);

    // Create an instance of the SVG Generator
    SVGGraphics2D g = new SVGGraphics2D(document);
    g.setSVGCanvasSize( new Dimension( 200, 200 ) );
    g.setBackground( Color.white );
    g.setColor( Color.black );

    // Draw the image into the generator.
    g.drawLine( 0, 0, 200, 200 );
    g.drawLine( 0, 200, 200, 0 );


    // Write the image as svg to the screen.
    boolean useCSS = true; // we want to use CSS style attribute
    String svgString = "";
    try
    {
      Writer out = new OutputStreamWriter( System.out, "UTF-8" );
      g.stream( out, useCSS );
      Writer svgStringWriter = new StringWriter();
      g.stream( svgStringWriter, useCSS );
      svgString = svgStringWriter.toString();
    }
    catch ( Exception ex )
    {
      ex.printStackTrace();
    }

    // Render the image to a png file.
      try
      {
        String parser = XMLResourceDescriptor.getXMLParserClassName();
        SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
        Reader docReader = new StringReader( svgString );
        Document doc = f.createDocument( null, docReader);

        // Populate the document root with the generated SVG content.
        Element root = document.getDocumentElement();
        g.getRoot( root );

        PNGTranscoder t = new PNGTranscoder();
        TranscoderInput input = new TranscoderInput( doc );
        OutputStream ostream = new FileOutputStream( "c:/Temp/out.png" );
        TranscoderOutput output = new TranscoderOutput( ostream );
        t.transcode( input, output );
        ostream.flush();
        ostream.close();
      }
      catch ( Exception ex1 )
      {
        ex1.printStackTrace();
      }
  }
}

What am I doing wrong?

Thanks in advance for any help,
Kevin Finley


__________________________________
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing.
http://photos.yahoo.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to