svg to svg saving problem

Discussion in 'Java' started by milof83, Aug 18, 2006.

  1. milof83

    milof83 Guest

    hi,
    I am a beginner batik user and at the moment I am working on apiece of
    code which would allow me to open svg file edit it and save it as an
    svg file.

    I have sucessfully loaded svg file (thanks to thomas.deweese) and
    currently I'm facing a problem with saving it to an svg file.

    Below is the sourcecode for the function which is supposed to do the
    task.

    public void editSVG (String inputFilename, String outputFilename)
    throws Exception {

    String svgURI = new
    File(inputFilename).toURL().toString();

    try{
    UserAgentAdapter ua = new UserAgentAdapter();
    DocumentLoader loader = new DocumentLoader(ua);
    Document doc = loader.loadDocument(svgURI);

    // get the root element (the svg element)
    Element svgRoot = doc.getDocumentElement();

    // set the width and height attribute on the root svg
    element
    svgRoot.setAttributeNS(svgURI, "width", "400");
    svgRoot.setAttributeNS(svgURI, "height", "330");

    // create the rectangle
    Element rectangle = doc.createElementNS(svgNS, "rect");

    rectangle.setAttributeNS(null, "x", "200");
    rectangle.setAttributeNS(null, "y", "200");
    rectangle.setAttributeNS(null, "width", "100");
    rectangle.setAttributeNS(null, "height", "100");
    rectangle.setAttributeNS(null, "fill", "red");

    // attach the rectangle to the svg root element
    svgRoot.appendChild(rectangle);

    TranscoderInput input = new TranscoderInput(doc);
    OutputStream ostream = new
    FileOutputStream(outputFilename);
    TranscoderOutput output = new TranscoderOutput(ostream);

    svgTrans.transcode(input, output);
    ostream.flush();
    ostream.close();

    System.out.println("SVG edited");
    } catch (Exception e){
    System.out.println("Error: " + e);
    }
    }

    The error message i'm recieving during the program runtime:

    Exception in thread "main" java.lang.Error: Writer expected
    at
    org.apache.batik.transcoder.svg2svg.SVGTranscoder.transcode(Unknown
    Source)
    at SVGtoJPEG.editSVG(SVGtoJPEG.java:96)
    at SVGtoJPEG.main(SVGtoJPEG.java:112)
    milof83, Aug 18, 2006
    #1
    1. Advertising

  2. On 18-8-2006 18:01, milof83 wrote:
    > hi,
    > I am a beginner batik user and at the moment I am working on apiece of
    > code which would allow me to open svg file edit it and save it as an
    > svg file.
    >
    > I have sucessfully loaded svg file (thanks to thomas.deweese) and
    > currently I'm facing a problem with saving it to an svg file.
    >
    > Below is the sourcecode for the function which is supposed to do the
    > task.
    >
    > public void editSVG (String inputFilename, String outputFilename)
    > throws Exception {
    >

    [...]
    >
    > TranscoderInput input = new TranscoderInput(doc);
    > OutputStream ostream = new
    > FileOutputStream(outputFilename);
    > TranscoderOutput output = new TranscoderOutput(ostream);
    >
    > svgTrans.transcode(input, output);
    > ostream.flush();
    > ostream.close();
    >
    > System.out.println("SVG edited");
    > } catch (Exception e){
    > System.out.println("Error: " + e);
    > }
    > }
    >
    > The error message i'm recieving during the program runtime:
    >
    > Exception in thread "main" java.lang.Error: Writer expected
    > at
    > org.apache.batik.transcoder.svg2svg.SVGTranscoder.transcode(Unknown
    > Source)
    > at SVGtoJPEG.editSVG(SVGtoJPEG.java:96)
    > at SVGtoJPEG.main(SVGtoJPEG.java:112)
    >

    Apparently SVGTranscoder wants a Writer for output instead of an
    OutputStream. Try the following:


    import java.io.Writer;
    import java.io.FilterWriter;
    ....
    TranscoderInput input = new TranscoderInput(doc); // still the same
    Writer owriter = new FileWriter(outputFilename); // this is different
    TranscoderOutput output = new TranscoderOutput(owriter); // almost same
    svgTrans.transcode(input, output); // same
    owriter.flush(); // almost same
    owriter.close(); // almost same
    ....
    --
    Regards,

    Roland
    Roland de Ruiter, Aug 18, 2006
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. John Kandell
    Replies:
    4
    Views:
    4,141
    eeebop
    Dec 10, 2004
  2. Arne Nordmann
    Replies:
    0
    Views:
    511
    Arne Nordmann
    Jun 28, 2004
  3. Mardagg
    Replies:
    0
    Views:
    794
    Mardagg
    May 12, 2006
  4. Mardagg
    Replies:
    0
    Views:
    645
    Mardagg
    May 12, 2006
  5. Helmut Jarausch

    Re: svg-chart 1.1 SVG Charting Library

    Helmut Jarausch, May 20, 2008, in forum: Python
    Replies:
    0
    Views:
    461
    Helmut Jarausch
    May 20, 2008
Loading...

Share This Page