2011-04-04 22 views
15

¿Hay alguna forma de convertir un fragmento de html en svg?Conversión de html a svg usando javascript/jquery

por ejemplo: <b>This is bolded</b>

Quiero hacer un documento SVG con el fragmento de HTML anterior ... es esto posible?

+0

No es una referencia definitiva, pero es suficiente para ponerlo en marcha: http://www.w3schools.com/svg/default.asp – RobG

+0

Y aquí hay un tutorial rápido sobre el uso del elemento de texto: http: //tutorials.jenkov .com/svg/text-element.html – RobG

+0

@RobG pero ¿realmente toma el código HTML y lo convierte en svg? Lo que intento hacer es crear un svg suministrando el innerHTML de un elemento div sin hacer ningún cambio manual. – FoGy

Respuesta

7

Sugiero que edite su pregunta para describir el caso de uso real y el objetivo que está tratando de lograr, ya que la implementación directa de lo que parece pedir es difícil (ver más abajo). Es mucho más probable que alguna combinación de SVG-in-XHTML o XHTML-in-SVG (por ejemplo, this) le proporcione el deseo que desea.

Solo podemos ayudarlo a lograr sus objetivos si nos dice cuáles son sus objetivos en lugar de solicitar que lo ayudemos a resolver una implementación en particular que usted pensó para lograrlos.


Como mencioné anteriormente, no hay una manera fácil de hacer lo que sugiere. En particular, HTML tiene conceptos automáticos de ajuste de línea, flotante y de posicionamiento general, así como una indexación explícita de z, que no están presentes en SVG.

La siguiente sería la locura en su mayoría trabajan, sin embargo:

  • Crear un iframe o div en su página y establecer el HTML a su fragmento.
  • Pasa a través de cada elemento y convierte un intervalo de margin:0;padding:0;border:0 alrededor de cada palabra en el texto.
  • Pasa por cada elemento (incluidos los tramos creados) y calcula la posición absoluta en la página. (JQuery tiene un método para hacer esto, o se puede utilizar la combinación de offsetLeft/offsetTop y offsetParent que subir el árbol posicionado y calcular por sí mismo.)
    • calcular el equivalente de índice z para cada elemento por subir el árbol y usando el getComputedStyle() y creando una cadena del índice z local.
    • Para cada uno de estos elementos, cree el elemento equivalente en SVG con un posicionamiento absoluto.
  • Vuelva a clasificar los elementos SVG que creó por la jerarquía de z-índices.
+0

problema con la etiqueta svg foreignObject es que no es compatible con, por ejemplo, 9 y tampoco se puede serializar el SVG – FoGy

+0

¿Alguien implementó esa "locura"? Necesito cargar SVG en una etiqueta y 'foreignObject' [no funciona bien] (https://codepen.io/qgustavor/pen/bLarww) en este caso. –

4

Compruebe esto html to SVG demo, (utilizando HiQPDF, un producto comercial). Puede encontrar ejemplos de código para C# y VB.NET. Puede convertir una URL o un fragmento de código HTML como lo solicitó.

+0

Gran software. Qué lástima que no tengan un producto razonablemente apreciado, sino solo la biblioteca dirigida a los desarrolladores. – Christian