<p>I am working on interactive SVG/AJAX interfaces where elements are created and repositioned on-the-fly by users. I'd like to support the ability for users to export their current view to a PNG image and/or an SVG document. I'd really like the SVG document to be as simple as possible (without a lot of nested transforms). Is there any framework that already supports this?</p>

<p>I'm currently asking my users to use the Ctrl+Alt+PrntScrn technique, and I don't want to ask them to install any software/plugins. </p>

<p>The server-side code is implemented in PHP right now, if that helps. I've already implemented the ability to generate a PNG image from the "original" document (before the client makes any modifications) using ImageMagick.</p>

I'm assuming you need this to work only in browsers that support SVG.
Firefox, Safari, and Opera provide the non-standard
```
XMLSerializer
```
API, so you could do something like this:
```
```
var svg = document.getElementById('svg_root'); // or whatever you call it
var serializer = new XMLSerializer();
var str = serializer.serializeToString(svg);
```
```
From there, you can send it to the server and receive a PNG in return.
Here's
Mozilla's developer page on serializing XML from the DOM
.