Преобразование HTML в SVG с помощью JavaScript / JQuery - PullRequest
15 голосов
/ 04 апреля 2011

Есть ли способ конвертировать фрагмент HTML в SVG?

например: <b>This is bolded</b>

Я хочу сделать документ SVG с фрагментом HTML выше ... это возможно?

Ответы [ 3 ]

7 голосов
/ 04 апреля 2011

Я бы посоветовал вам отредактировать ваш вопрос, чтобы описать фактический вариант использования и цель, которую вы пытаетесь достичь, так как непосредственно реализовать то, о чем вы, кажется, просите, сложно (см. Ниже). Некоторые комбинации SVG-in-XHTML или XHTML-in-SVG (например, this ) с гораздо большей вероятностью дадут вам то, что вы хотите.

Мы можем помочь вам в достижении ваших целей, только если вы сообщите нам свои цели, а не попросите нас помочь вам решить конкретную реализацию, о которой вы думали, для их достижения.


Как я упоминал выше, не существует простого способа сделать то, что вы предлагаете. В частности, HTML имеет автоматические переносы строк, плавающие и общие концепции позиционирования, а также явное z-индексирование, которых нет в SVG.

Следующее безумие в основном сработает, однако:

  • Создайте на своей странице iframe или div и установите HTML-код для своего фрагмента.
  • Переберите каждый элемент и преобразуйте оболочку margin:0;padding:0;border:0 вокруг каждого слова в тексте.
  • Переберите каждый элемент (включая созданные вами пролеты) и рассчитайте абсолютную позицию на странице. (У jQuery есть метод для этого, или вы можете использовать комбинацию offsetLeft / offsetTop и offsetParent, чтобы пройти вверх по позиционированному дереву и вычислить его самостоятельно.)
    • Рассчитайте эквивалентный z-индекс для каждого элемента, пройдя по дереву, используя getComputedStyle() и создав цепочку локального z-индекса.
    • Для каждого из этих элементов создайте эквивалентный элемент в SVG с абсолютным позиционированием.
  • Пересортируйте элементы SVG, созданные вами по иерархии z-индексов.
4 голосов
/ 12 августа 2012

Отметьте это html to SVG demo , (используя HiQPDF, коммерческий продукт).Вы можете найти там примеры кода для C # и VB.NET.Вы можете конвертировать URL или фрагмент кода HTML по вашему запросу.

3 голосов
/ 24 февраля 2012

Существуют JS-библиотеки, которые конвертируют html в canvas: http://html2canvas.hertzen.com/ Но до сих пор я не нашел ничего похожего для svg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...