Re: More on: How to create a SVG File in Java.

Bernd,

I've attached a java program to create an SVG document in
Java (using the SVG DOM) and output it to an XML file.

As Vincent (for ProjectX) and Kelvin (for Xerces) have
suggested, the SVGDocument can be output as a typical
XML Document using the XML tools.

This file is org/csiro/svg/parser/CreateSVG.java in the
latest release of the CSIRO toolkit (which will happen
in about 2 hours!). It uses a file XMLWriter.java which
isn't attached to this message but included in the distribution.

Dean

--

package org.csiro.svg.parser;

import org.csiro.svg.dom.*;
import org.w3c.dom.svg.*;
import java.io.*;


// this is a sample file that shows how to create an svg document and
// write it to a file

public class CreateSVG {

  public static void main(String[] args) {

    if (args.length != 1) {
      System.out.println("usage: java org.csiro.svg.parser.CreateSVG
out.svg");
      System.exit(1);
    }
    try {
      SVGDocument svgDoc = new SVGDocumentImpl(true);  // the "true"
indicates that this is to be a stylable svg doc

      // create root <svg> element and add it to doc
      SVGSVGElement root =  (SVGSVGElement)svgDoc.createElement("svg");
      svgDoc.appendChild(root);

      // set width and height of <svg> element
      SVGLength width = root.createSVGLength();
      width.setValueAsString("15cm");
      SVGLength height = root.createSVGLength();
      height.setValue(600);
      root.setWidth(width);
      root.setHeight(height);

      // add a circle
      SVGCircleElement circle =
(SVGCircleElement)svgDoc.createElement("circle");
      SVGLength cx = root.createSVGLength();
      cx.setValue(100);
      circle.setCx(cx);
      SVGLength cy = root.createSVGLength();
      cy.setValue(100);
      circle.setCy(cy);
      circle.setAttribute("r", "50");
      circle.setAttribute("style", "fill:red; stroke:black;
stroke-width:5");
      root.appendChild(circle);

      // add a rectangle
      SVGRectElement rect =
(SVGRectElement)svgDoc.createElement("rect");
      SVGLength rectX = root.createSVGLength();
      rectX.setValueAsString("200px");
      rect.setX(rectX);
      SVGLength rectY = root.createSVGLength();
      rectY.setValueAsString("250px");
      rect.setY(rectY);
      rect.setAttribute("width", "200");
      rect.setAttribute("height", "150");
      rect.setAttribute("style", "fill:none; stroke:blue;
stroke-width:10");
      root.appendChild(rect);

      // write the svg doc to a file
      FileOutputStream out = new FileOutputStream(new File(args[0]));
      XmlWriter writer = new XmlWriter(out);
      // need to pass in the doctype declaration so that it can be put
at the top of the xml file
      writer.print(svgDoc, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG
20000303 Stylable//EN\" \"svg-20000303-stylable.dtd\" >");
      out.close();

    } catch (IOException e) {
      System.out.println("IOException: " + e.getMessage());
      System.exit(1);
    }
    System.out.println("finished writing svg file: " + args[0]);
    System.exit(0);
  }
}

Received on Monday, 5 June 2000 18:54:28 UTC