php - www - ¿Cuál es la mejor manera de serializar SVG desde el DOM del cliente?




www 3wc (2)

Opera tiene implementación del serializador DOM → XML del W3C . En el modo XML innerHTML devuelve XML bien formado en Gecko.

HTML5 <canvas> puede exportar su contenido como archivo PNG utilizando toDataURL() y es posible pintar cualquier elemento <img> en canvas utilizando drawImage() , por lo que debería ser posible crear <img src="data:application/svg+xml,…"> , pinte en lienzo y exporte como data: URL.

Estoy trabajando en interfaces interactivas SVG / AJAX donde los usuarios crean y reposicionan elementos sobre la marcha. Me gustaría apoyar la capacidad de los usuarios para exportar su vista actual a una imagen PNG y / o un documento SVG. Realmente me gustaría que el documento SVG sea lo más simple posible (sin muchas transformaciones anidadas). ¿Hay algún marco que ya lo soporte?

Actualmente estoy pidiendo a mis usuarios que utilicen la técnica Ctrl + Alt + PrntScrn, y no quiero pedirles que instalen ningún software / complementos.

El código del lado del servidor se implementa en PHP ahora mismo, si eso ayuda. Ya he implementado la capacidad de generar una imagen PNG a partir del documento "original" (antes de que el cliente realice modificaciones) usando ImageMagick.


Supongo que necesita esto para que funcione solo en navegadores compatibles con SVG.

Firefox, Safari y Opera proporcionan la API XMLSerializer no estándar, por lo que podría hacer algo como esto:

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

Desde allí, puede enviarlo al servidor y recibir un PNG a cambio.

Aquí está la página del desarrollador de Mozilla sobre la serialización de XML desde el DOM .







svg