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. Advertisements

  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. Advertisements

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,449
    eeebop
    Dec 10, 2004
  2. Luis Esteban Valencia
    Replies:
    0
    Views:
    2,754
    Luis Esteban Valencia
    Jan 6, 2005
  3. Klaubator

    Unicode + SVG problem

    Klaubator, Jun 1, 2004, in forum: XML
    Replies:
    1
    Views:
    1,838
    Martin Honnen
    Jun 1, 2004
  4. Arne Nordmann
    Replies:
    0
    Views:
    690
    Arne Nordmann
    Jun 28, 2004
  5. Mardagg
    Replies:
    0
    Views:
    1,009
    Mardagg
    May 12, 2006
  6. Mardagg
    Replies:
    0
    Views:
    856
    Mardagg
    May 12, 2006
  7. Replies:
    0
    Views:
    696
  8. Lovely Angel For You

    Saving Images While Saving ASP Pages !

    Lovely Angel For You, Oct 2, 2003, in forum: ASP General
    Replies:
    1
    Views:
    357
    Curt_C [MVP]
    Oct 3, 2003
Loading...