2008-10-22 33 views
4

我正在創建交互式SVG/AJAX接口,其中的元素是由用戶即時創建和重新定位的。我想支持用戶將其當前視圖導出爲PNG圖像和/或SVG文檔的功能。我真的很喜歡SVG文檔儘可能簡單(沒有很多嵌套轉換)。有沒有任何框架已經支持這個?從客戶端DOM序列化SVG的最佳方式是什麼?

我現在要求我的用戶使用Ctrl + Alt + PrntScrn技術,我不想讓他們安裝任何軟件/插件。

服務器端代碼現在在PHP中實現,如果有幫助的話。我已經實現了使用ImageMagick從「原始」文檔(客戶端進行任何修改之前)生成PNG圖像的功能。

回答

9

我假設你只需要在支持SVG的瀏覽器中工作。

火狐,Safari和Opera提供非標XMLSerializer API,所以你可以做這樣的事情:

var svg = document.getElementById('svg_root'); // or whatever you call it 
var serializer = new XMLSerializer(); 
var str = serializer.serializeToString(svg); 

從那裏,你可以將它發送到服務器並接收返回一個PNG。

這是Mozilla's developer page on serializing XML from the DOM

4

Opera已經實現了W3C's DOM→XML serializer。在XML模式下,innerHTML在Gecko中返回格式良好的XML。

HTML5 <canvas>可以導出其作爲使用toDataURL() PNG文件的內容,並有可能畫上使用drawImage()帆布任何<img>元素,所以它應該是可能創造<img src="data:application/svg+xml,…">,畫在帆布上,出口爲data: URL。

相關問題