Estoy desarrollando una página web que realiza un procesamiento bastante pesado de datos de cadenas SVG. Debido a que estas cadenas podrían llegar a tener un tamaño de m/bs, me gustaría mover la representación de los SVG (depende del navegador) a un trabajador para evitar bloquear la interfaz de usuario.
Mi problema es que no se puede acceder a los elementos DOM en los trabajadores. ¿Hay alguna forma de dibujar el SVG en un contexto 2D de OffscreenCanvas usando solo la cadena SVG? ¿O hay alguna forma de convertir la cadena a un formato de datos que se pueda pasar al trabajador?
No hay forma nativa todavía.
Según las especificaciones, debería poder crear un ImageBitmap desde un Blob que contiene su imagen SVG incluso en un Worker.
En realidad, ningún navegador lo ha implementado, y cuando lo hablé con los implementadores, parece que nadie está en camino de hacerlo.
En Chrome, tiene acceso al constructor Path2D, que de alguna manera puede ayudar con los atributos d de <path> , pero eso es solo una parte muy pequeña de la representación de un SVG.
Entonces, lo mejor probablemente sea usar una biblioteca para esto.
En particular, creo que canvg es el más apropiado aquí. No lo uso yo mismo, pero están aquí desde hace mucho tiempo, y parece que la última versión funciona con OffscreenCanvas en un Worker (en Chrome).